-2
下面的代碼會發生什麼?如果給出一個指向數組中間的指針,delete []會做什麼?
int *p1 = new int[100];
int *p2 = &p1[50];
delete [] p2;
聽說新店的一些實現數組的大小(-1)個數組索引,但後來就不事情可怕的錯誤在上面?
下面的代碼會發生什麼?如果給出一個指向數組中間的指針,delete []會做什麼?
int *p1 = new int[100];
int *p2 = &p1[50];
delete [] p2;
聽說新店的一些實現數組的大小(-1)個數組索引,但後來就不事情可怕的錯誤在上面?
事情肯定會出錯!
的刪除[]操作者被定義爲僅工作於適當陣列的指針。正確的我的意思是它必須接收一個指針,該指針以前已初始化爲指向內存中的位置,其中的數組是使用新的運算符創建的。
你也不應該混用new/delete和malloc/free。作爲一個規則始終刪除已分配與new
內存和已分配與malloc
(及其衍生物)
未定義行爲免費內存! – mythagel 2013-03-01 02:28:36
這個副本很容易找到......如果您可以在發佈問題之前進行一些研究,那將會很棒。 – jogojapan 2013-03-01 02:29:45