-1
我有以下情況。刪除vs刪除[]
int *arrayP=new int[4];
arrayP[0]=0;arrayP[1]=1;arrayP[2]=2;arrayP[3]=3;
int *temp;
cout<<arrayP[0]<<endl;
temp=arrayP;
++arrayP;
cout<<arrayP[0];
cout<<arrayP[1];
delete temp;
cout<<arrayP[0];
輸出
0
1
2
-1212222
爲什麼會這樣呢? arrayP指向大小爲4的數組上的第一個元素。 因此,temp也指向第一個元素 現在爲什麼刪除temp即第一個元素也會刪除整個整數數組.arrayP將存儲數組中下一個元素的地址(因爲arrayP [0]顯示的是垃圾值)。
如果是這樣的話(即刪除temp將刪除整個整數數組)區別刪除[]和刪除。
現在爲什麼要在那裏刪除溫度,即第一個電阻。你不能使用'delete',你沒有用'new'分配的東西。如果您使用'new []',則必須使用'delete []'。一旦你違反了這條規則,一切都停止了。也就是說,爲什麼會有人使用'new []':| –
好的。假設我的代碼不再需要數組的第一個元素,那麼就沒有辦法釋放這個空間了(我想避免將它複製到一個更短的數組中,因爲它是一個佔用時間的工作,很明顯是鏈接列表) – user2511713
如果它不需要數組的第一個元素,但需要其他元素,那麼就不要引用它;你真的在乎嗎? – Bathsheba