C/C++ 遇到0xcccccccc訪問沖突


最近一直在糾結這個問題.

 

最近寫代碼,總是遇到這個問題,一旦遇到這個問題,以前好使的代碼也就不好使了。很費解,上網搜集了下資料....

這個0xcccccccc是DEBUG模式下,編譯器為沒有初始化的指針填充的地址值。當你進入到斷電時,也會看到很多其他的未初始化的指針都是這個值

 

 

而為什么會是這個值呢?

因為,0xcc是INT 3的機器碼,而這個INT 3是留給編譯器中斷時用的 替換向量,一旦斷電繼續執行下,就會替換掉這個值。

為什么系統要填充這個固定的值呢?

因為,在DEBUG模式下,就是為了測試代碼的運行。如果每次都隨機指定一個地址,那最后測試的結果也會不一樣。如果隨機填充了一個地址,這個地址在未經初始化的情況下使用了,但是換到RELEASE模式下的時候,就會出現意外的情況。因此,添加這個值,確保指針在使用前都經過了初始化。

 

其他還有固定的地址值對應的錯誤:

0xcdcdcdcd - Created but not initialised 

0xdddddddd - Deleted

0xfeeefeee - Freed memory set by NT's heap manager

0xcccccccc - Uninitialized locals in VC6 when you compile w/ /GZ

0xabababab - Memory following a block allocated by LocalAlloc()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM