关于new创建动态数组时初始化的困惑
int main()
{
int *pia2 = new int[10]();
int *a = new int [10];
cout<<*pia2<<endl;
cout<<*a<<endl;
delete [] pia2;
delete [] a;
return 0;
}
嗯,书上说在数组后面跟一对圆括号,对数组元素做值初始化,且是把数组元素都设置为0。可查看*pia2时,不是0,而是一个别的数,vc6.0上是-842150451.而且与*a的值是一样的。而a指向的数组时没有初始化的,这是怎么回事呢?难道是机器问题吗。 vc
[解决办法]
T *p = new T;
T *p = new T(); // 这个才初始化。
T *p = new T[N];
for (int i = 0; i < N; ++i)
{
new (p + i)T();
}