1. 程式人生 > >C++ windows已在xxx.exe中觸發一個斷點,其原因可能是堆被損壞,這說明xx.exe中或它所載入的任何DLL中有bug。

C++ windows已在xxx.exe中觸發一個斷點,其原因可能是堆被損壞,這說明xx.exe中或它所載入的任何DLL中有bug。

windows已在xxx.exe中觸發一個斷點,其原因可能是堆被損壞,這說明xx.exe中或它所載入的任何DLL中有bug。 
原因也可能是使用者在xx.exe具有焦點時按下了F12。 
輸出視窗可能提供了更多診斷資訊 。 

我出現類似錯誤的情況是:

建立一個連結串列,在向連結串列插入完資料析構並釋放掉連結串列的時候出現的錯誤。

為什麼不知道,但是是這樣解決的:

把插入連結串列的物件修改成 Type * p = new Type()的形式,然後直接傳遞指標,不要Type p,然後傳遞&p,這樣就會報錯。

可能Type p這種申請一個變數還是臨時的變數,在插入其引用的時候資料可以很好的傳遞,但是釋放連結串列的時候,應該只有一個p,因為這是個靜態臨時變數,內容一直在變化,但記憶體只有一個。而new每次都是新開闢一個空間。

這樣在最後釋放連結串列的時候,不至於只釋放一個p的空間。