標(biāo)題: 野指針 HEAP: Free Heap block 00000080FACA3FC0 modified at 00000080FACA4008 af... [打印本頁(yè)]

作者: 51黑er    時(shí)間: 2015-11-2 15:43
標(biāo)題: 野指針 HEAP: Free Heap block 00000080FACA3FC0 modified at 00000080FACA4008 af...
如果你是C/C++程序員,如果你寫(xiě)過(guò)一個(gè)很復(fù)雜的程序,如果你經(jīng)常碰到莫名其妙的崩潰問(wèn)題。那么你就有可能遭遇了野指針。如果你比較細(xì)心,注意了Debug output輸出窗口的話(huà),那么你就有可能注意到這樣一行提示:



網(wǎng)絡(luò)上關(guān)于這個(gè)問(wèn)題提問(wèn)的人不少,但是真正給的出答案的卻少之又少。

那么何為野指針呢?
野指針與NULL指針不同.所謂野指針是指指針?biāo)傅膬?nèi)存已經(jīng)回收,而繼續(xù)使用該指針,導(dǎo)致未定義行為.


===============================================================


GFlags是windows debug tools (https://msdn.microsoft.com/en-us/library/ff551063.aspx) 工具包下的一個(gè)工具,用來(lái)設(shè)置一些調(diào)試屬性,總體上分為3個(gè)級(jí)別System, Kernel, 和 Image File。
我們?cè)O(shè)置好Path環(huán)境變量,將其指向Debug tools工具的目錄下。
輸入如下命令行:
gflags /p App.exe /full
或者 pageheap app.exe /full
該命令行會(huì)在注冊(cè)表里設(shè)置一些調(diào)試參數(shù),使內(nèi)存在使用的時(shí)候加入了保護(hù)機(jī)制,所以一旦內(nèi)存寫(xiě)越界,或者發(fā)生野指針的問(wèn)題,都會(huì)導(dǎo)致一個(gè)中斷。由此,你就可以確定問(wèn)題到底出在哪里了。


  







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1