如何解決 " HEAP: Free Heap block xxxxxxxx modified at xxxxxxxx after it was freed "

如果你是C++程序員,如果你寫過一個很複雜的程序,如果你經常碰到莫名其妙的崩潰問題。那麼你就有可能遭遇了野指針。如果你比較細心,注意了Debug output輸出窗口的話,那麼你就有可能注意到這樣一行提示:

HEAP:   Free   Heap   block   xxxxxxxx modified   at   xxxxxxxx  after   it   was   freed 

網絡上關於這個問題提問的人不少,但是真正給的出答案的卻少之又少。在網上搜索了幾天,終於發現了這個問題的解決之道。下面我來介紹一下。

 

 GFlags是windows debug tools 工具包下的一個工具,在Windows 2000的Resource Kit中也可以找得到。用來設置一些調試屬性,總體上分爲3個級別System, Kernel, 和 Image File。

我們設置好Path環境變量,將其指向Debug tools工具的目錄下。

輸入如下命令行:

gflags /p App.exe /full

或者 pageheap app.exe /full

該命令行會在註冊表裏設置一些調試參數,使內存在使用的時候加入了保護機制,所以一旦內存寫越界,或者發生野指針的問題,都會導致一箇中斷。由此,你就可以確定問題到底出在哪裏了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章