我正在追逐內存堆損壞錯誤。我所擁有的是據稱在釋放後被修改的內存地址。 Windows主要做了觸發退出一個斷點,我在輸出窗口中看到錯誤消息如下:Visual Studio(VC++ 2005)調試內存
HEAP[myprogram.exe]: HEAP: Free Heap block df56c20 modified at df56c80 after it was freed
我的問題是在準確點當Windows觸發斷點,我可以追溯到在我的代碼點對應與這個地址相關的數據?這至少有助於調試。感謝關於如何做到這一點的任何想法。我讀http://msdn.microsoft.com/en-us/library/s3aw423e.aspx,但是我怎麼能夠做我想做的事情並不十分清楚。謝謝!
感謝@Luchian:我只是試過,但到那時,代碼似乎是Windows庫ntdll.dll沒有調用堆棧返回到我的應用程序,問題是這個地址不是每次運行修復;所以我不知道它的先驗十六進制表示。如果我知道先驗,我甚至會在開始調試之前就開始使用它。有什麼建議麼? –
@ squashed.bugaboo刪除代碼,直到您不再受到損壞。這應該縮小它的範圍。 –
謝謝@Luchian:好的。我明白了,所以你基本上是在暗示(我推遲了什麼),以恢復到沒有錯誤的代碼的工作版本。我說的是對的嗎? –