我正在學習指針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只會變爲零。 –