我正在学习指针atm。我对delete []运算符感到困惑。 下面是一个例子:C++ delete []运算符混淆
int* a = new int[12];
for (int i=0; i<12; i++)
a[i]=123;
delete[] a;
for (int i=0; i<12; i++)
cout <<a[i]<<" ";
如果我没有得到它,delete[]
经营者应destory阵列中的所有对象。 但我的输出是这样的:
10621288 10617028 123 123 123 123 123 123 123 123 123 123
只有前两个元素被销毁。 我做错了什么?
@ kr4lj:在这种情况下,没有什么可以销毁的,因为数组包含整数 - 只有数组本身的内存被释放。如果数组包含对象,您会看到它们的析构函数被逐个调用。 – Jon
我也是这样做的,得到了前两个元素归零。你不能在物理上弄到一个内存位置:如果零是编译器和释放以供以后使用,则D只会变为零。 –