C++ 技术中心

   :: 首页 :: 联系 ::  :: 管理
  160 Posts :: 0 Stories :: 87 Comments :: 0 Trackbacks

公告

郑重声明:本BLOG所发表的原创文章,作者保留一切权利。必须经过作者本人同意后方可转载,并注名作者(天空)和出处(CppBlog.com)。作者Email:coder@luckcoder.com

留言簿(27)

搜索

  •  

最新随笔

最新评论

评论排行榜

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


VC++在Debug编译方式编译的程序中,会跟踪用new分配的内存。新分配的内存会用0xcd(助记词为Cleared Data)填充,防止未初始化;当它被delete后,又会被0xdd(Dead   Data)填充,防止再次被使用。这样有利于调试内存错误。之所以选这样的填充模式,是因为:

1.大数,若被当成指针就会越界 

2.奇数,指针通常指向偶数地址  

3.非0,这样不会和   NULL   混淆。 


在Release版中不会有这些字节填充。

posted on 2017-07-06 11:33 C++技术中心 阅读(1422) 评论(1)  编辑 收藏 引用 所属分类: C++ 基础

Feedback

# re: vc内存地址填充 2017-07-07 09:54 冬瓜
你看的不全啊,0xcc表示是指令码:int 3,也就是软中断,  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理