zoukankan      html  css  js  c++  java
  • VC中关于 0xcccccccc和 0xcdcdcdcd异常

            VC在调试时,可能会报“写入位置0xcccccccc 时发生访问冲突”,或者“写入位置0xcdcdcdcd 时发生访问冲突”,这些问题可能是由于使用了未初始化的指针引起的。

            在 Debug 模式下,VC 会把未初始化的栈内存上的指针全部填成 0xcccccccc ,当字符串看就是 “烫烫烫烫……”,会把未初始化的堆内存上的指针全部填成 0xcdcdcdcd,当字符串看就是 “屯屯屯屯……”。那么调试器为什么要这么做呢?

            VC的DEBUG版会把未初始化的指针自动初始化为0xcccccccc或0xcdcdcdcd,而不是就让取随机值,那是为了方便我们调试程序,如果野指针的初值不确定,那么每次调试同一个程序就可能出现不一样的结果,比如这次程序崩掉,下次却能正常运行,这样显然对我们解bug是非常不利的,所以自动初始化的目的是为了让我们一眼就能确定我们使用了未初始化的野指针了。


            常见默认值说明:

            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()





  • 相关阅读:
    测试及开发中应当要考虑的安全问题
    31、Python之会话管理cookie和session
    Scrapy爬虫框架入门
    30、Python之web框架django进阶篇
    装饰器函数
    函数初始后续与进阶
    函数初识
    文件操作
    日本语自学
    编码,集合
  • 原文地址:https://www.cnblogs.com/riskyer/p/3322974.html
Copyright © 2011-2022 走看看