首先,我们知道,memset(数组名如A,0,sizeof(A))和memset(数组名如A,-1,sizeof(A))分别能够将整个数组A初始化为0和-1(前者0,后者-1)。
利用new的方法获得指定长度的动态分配内存的数组,此时memset不适用,那是因为sizeof(A)不是数组尺寸,而仅仅是该元素的size如int 4;
#include<bits/stdc++.h>
using namespace std;
int main()
{
int*X;
X = new int[100];
cout << sizeof(int) << endl;
memset(X, -1, sizeof(X));
for(int k = 0; k<100; k++)
cout << X[k] << ' ';
}
打印的效果是:其中第一个数字是int的尺寸,第二个数字-1表示第零位置被初始化为-1,其余的都没有初始化成功。
4
-1 8654280 1547322173 1735357008 544039282 1701603654 2015895667 2700856 1735357008 1181573490 1936026729 909670440 977485097 1869762652 1835102823 1818838560 673215333 691419256 1869762560 1835102823 859059799 977485106 1869762652 1835102823 1818838560 1342206821 1685015891 1348824181 1030255713 1465662019 1868852841 1935438711 1702130553 1546793837 1684957527 1349744495 1919252335 1818585171 829840492 1297887278 1819632751 6058853 1