• 0xcccccccc: Used by Microsoft’s C++ debugging runtime library to mark uninitialised stack memory

  • 0xcdcdcdcd: Used by Microsoft’s C++ debugging runtime library to mark uninitialised heap memory

  • 0xfeeefeee :Used by Microsoft’s HeapFree() to mark freed heap memory

  • 0xabababab :Used by Microsoft’s HeapAlloc() to mark “no man’s land” guard bytes after allocated heap memory

  • 0xabadcafe :A startup to this value to initialize all free memory to catch errant pointers

  • 0xbaadf00d : Used by Microsoft’s LocalAlloc(LMEM_FIXED) to mark uninitialised allocated heap memory

  • 0xbadcab1e : Error Code returned to the Microsoft eVC debugger when connection is severed to the debugger

  • 0xbeefcace :Used by Microsoft .NET as a magic number in resource files

平时我们只需要了解上面常见的三种就可以了:0xcccccccc、0xcdcdcdcd和 0xfeeefeee ,以帮我们迅速地发现问题并分析问题。

对于0xcccccccc和0xcdcdcdcd,在 Debug 模式下,VC 会把未初始化的栈内存上的指针全部填成 0xcccccccc。当字符串看就是 “烫烫烫烫……”;会把未初始化的堆内存上的指针全部填成 0xcdcdcdcd,当字符串看就是 “屯屯屯屯……”。那么调试器为什么要这么做呢?VC的DEBUG版会把未初始化的指针自动初始化为0xcccccccc或0xcdcdcdcd,而不是就让取随机值,那是为了方便我们调试程序,如果野指针的初值不确定,那么每次调试同一个程序就可能出现不一样的结果,比如这次程序崩掉,下次却能正常运行,这样显然对我们解bug是非常不利的,所以自动初始化的目的是为了让我们一眼就能确定我们使用了未初始化的野指针了。

对于0xfeeefeee,是用来标记堆上已经释放掉的内存。注意,如果指针指向的内存被释放了,变量变量本身的地址如未做改动,还是之前指向的内存的地址。如果该指针是一个类的指针,并且类中包含有指针变量,则内存被释放后(对于C++类,通常是执行delete操作),类中的指针变量就会被赋值为0xfeeefeee。如果早调试代码过程中,发现有值为0xfeeefeee的指针,就说明对应的内存被释放掉了,我们的代码已经出问题了。

关于VC 中 debug和Release模式下的变量初始化问题

大家都知道,debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc,而release的赋值近似于随机(我想是直接从内存中分配的,没有初始化过)。这样就明确了,如果你的程序中的某个变量没被初始化就被引用,就很有可能出现异常:用作控制变量将导致流程导向不一致;用作数组下标将会使程序崩溃;更加可能是造成其他变量的不准确而引起其他的错误。所以在声明变量后马上对其初始化一个默认的值是最简单有效的办法,否则项目大了你找都没地方找。代码存在错误在debug方式下可能会忽略而不被察觉到,如debug方式下数组越界也大多不会出错,在 release中就暴露出来了,这个找起来就比较难了(参考:http://bbs.csdn.net/topics/350212712)

内存中常见异常值的解释(0xcccccccc 0xcdcdcdcd 0xfeeefeee等)相关推荐

  1. Java中常见的名词解释

    java 学习笔记指路 基础知识 Python转java补充知识 Java中常见的名词解释 前端 [黑马程序员pink老师前端]HTML [黑马程序员pink老师前端]JavaScript基础大总结 ...

  2. lcms质谱仪_液相色谱质谱联用仪LCMS中常见现象及解释

    对于液相色谱质谱联用仪LCMS中常见现象,相信也是有很大一部分人是不知道的,那么该怎么解释其现象呢?有三点做解释,请往下看. 1.M+Na的问题 对于一些样品,只有M+Ma,而M+1几乎没有该类化合物 ...

  3. 内存中常见的错误及解决方法

    发生内存错误是件非常麻烦的事情.编译器不能自动发现这些错误,通常是在程序运行时才能捕捉到.而这些错误大多没有明显的症状,时隐时现,增加了改错的难度.有时用户怒气冲冲地把你找来,程序却没有发生任何问题, ...

  4. java.lang.Exception 中常见异常的解释

    一般面试中java Exception(runtimeException )是必会被问到的问题 常见的异常列出四五种,是基本要求.更多的....需要注意积累了 常见的几种如下: NullPointer ...

  5. python粒子风暴_气象雷达应用中常见的名词解释

    点击上方"编外气象人",发现更多精彩. 1.偏振 偏振是指横波的振动矢量(垂直于波的传播方向)偏于某些方向的现象.纵波不发生偏振.振动方向对于传播方向的不对称性叫做偏振(polar ...

  6. 常见Java面试题之解释内存中的栈、堆和静态区用法

    栈(stack).堆(heap)和静态区(static area)的用法区别 * 通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间: * 通过new关 ...

  7. C程序中常见的内存操作错误

    对C/C++程序员来说,管理和使用虚拟存储器可能是个困难的, 容易出错的任务.与存储器有关的错误属于那些令人惊恐的错误, 因为它们在时间和空间上, 经常是在距错误源一段距离之后才表现出来. 将错误的数 ...

  8. 错误内存【读书笔记】C程序中常见的内存操作有关的典型编程错误

    题记:写这篇博客要主是加深自己对错误内存的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 对C/C++程序员来讲,内存管理是个不小的挑战,绝对值得慎之又慎,否则让由上万行代码构成的 ...

  9. 基于C++中常见内存错误的总结

    在系统开发过程中出现的bug相对而言是比较好解决的,花费在这个上面的调试代价不是很大,但是在系统集成后的bug往往是难以定位的bug(最好方式是打桩,通过打桩可以初步锁定出错的位置,如:进入函数前打印 ...

  10. Android开发中常见的内存泄露案例以及解决方法总结

    Android开发中常见的内存泄露案例以及解决方法总结 参考文章: (1)Android开发中常见的内存泄露案例以及解决方法总结 (2)https://www.cnblogs.com/shen-hua ...

最新文章

  1. wmic 获取运行内存大小
  2. java基础 Unsafe
  3. JS、PHP、Python等五大编程语言爆漏洞;中兴 70 后程序员坠亡;雷军平定迅雷内乱 | 一周业界事
  4. android 重绘如何能不闪一下屏幕_前端性能优化之重绘和重排
  5. 【深度学习】卷积神经网络(Convolutional Neural Network)
  6. 登录小米帐号怎么会显示服务器错误,小米官网登录不进去怎么办 小米官网无法登陆是怎么回事...
  7. android sd卡 f2fs,显著提速!谷歌Pixel 3/3 XL使用了三星F2FS文件系统
  8. 南京大学计算机学院杨老师,南京大学计算机系名师风采_跨考网
  9. 读者福利,单独赠书啦!这次的书你肯定喜欢!
  10. python词云图输出(附代码)
  11. 谷歌地图集成_逐步将Google地图集成到您的角度应用程序中
  12. Hack The Box——Academy
  13. ps去水印教程_Ps去水印教程:简单三步教新手学习去狮子图像上的水印,多余的文...
  14. 物流行业大数据分析:数据驱动物流运营效率提升
  15. 硬件工程师基础知识(http://huarm.taobao.com/ )
  16. DSO详解-Direct Sparse Odometry论文解读
  17. 一些简单的js技术 实现点击 的js隐藏显示
  18. 计算机专业英语时间跨度,这是我见过的最变态的英语考试,没有之一
  19. Scala类和对象详解
  20. cassandra实战--物化视图(Materialized View)

热门文章

  1. Golang Gin实践 连载十六 在图片上绘制文字
  2. 从零开始做Vue前端架构(2)
  3. 数组操作--微信小程序学习教程
  4. Group By和Order By的总结
  5. Windows 7 God Mode
  6. WinCE-多功能控件之无闪烁时间显示
  7. 排便的快感--不是非主流
  8. 面向站长和网站管理员的Web缓存加速指南[翻译]
  9. 8.Docker技术入门与实战 --- 使用Dockerfile创建镜像
  10. 29.yii2 RBAC