4
我有以下代碼:運行時錯誤
int **arr = new int*[5];
for(int i = 0; i < 5; ++i)
arr[i] = new int[];
for(int i = 0; i < 5; ++i)
delete [] arr[i];
delete [] arr;
現在它編譯和運行成功,但是如果我從第一行中刪除的陣列尺寸「5」的代碼編譯,但最後一行的運行時錯誤崩潰。我有以下問題,我無法在Straustrup的C++書籍,因特網等中找到答案。
- 爲什麼代碼在指定情況下崩潰? (我的猜測是delete []無法找到要刪除的數組大小並崩潰。)
- 如果不允許分配多維數組而不指定大小爲什麼這些錯誤在編譯時未被編譯器捕獲?
此線程應該是有幫助的。 http://stackoverflow.com/questions/1087042/c-new-int0-will-it-allocate-memory – Mahesh
這甚至沒有在GCC 4.6.1上編譯。 –
[相關常見問題](http://stackoverflow.com/questions/4810664/) – fredoverflow