我對編程相對來說比較陌生,所以這可能聽起來像是一個愚蠢的問題,你給經驗豐富的專業人員在那裏。這裏所說:刪除內存並影響相關位置的數據
在C++中,當我使用數組delete運算符,我已經注意到,包含在已釋放內存位置的數據將被保留。例如:
int* testArray=new int[5];
testArray[3]=24;
cout<<testArray[3]; //prints 24
delete [] testArray;
cout<<testArray[3]; // still prints 24
隨後,我是對的假設,因爲testArray[3]
仍然打印42,數據刪除存儲位置仍然保存?如果是這樣,這個概念是否適用於其他語言,是否有任何特別的原因呢?
不應該「釋放」存儲位置都有空數據,或者是「空閒內存」只是對於可以通過其他應用程序使用內存的代名詞,不管位置是否包含數據或不?
我注意到,當涉及到非陣列類型,如int,雙等解引用並輸出該已刪除變量打印0而非數據不是這種情況。我也有一個偷偷摸摸的懷疑,我可能會使用錯誤的語法來刪除testArray
,這可能會讓這個問題更加愚蠢。儘管如此,我很想聽聽你的想法。
您的刪除數組的語法是正確的。只要您在程序中創建了一個** Undefined Behavior(UB)**,就可以通過訪問一個'delete'd內存。由於UB沒有看到預期/假定產出。 –
[你的聖經沒有被觸動。](http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope/6445794#6445794) –