- 浏览: 206598 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (231)
- C++学习 (41)
- vc学习 (25)
- vc异常 (4)
- Flex (2)
- Ext (0)
- java学习笔记 (15)
- mysql学习笔记 (1)
- ibatis学习笔记 (7)
- struts1学习笔记 (1)
- hibernate学习笔记 (3)
- javascript学习笔记 (8)
- eclipse快捷键 (2)
- 英语学习 (1)
- cmd (1)
- eclipse 配置 (2)
- 其他 (4)
- JAVASE (34)
- firefox (1)
- linux (8)
- Apache (6)
- cms (22)
- jsuc (10)
- html (3)
- css (1)
- 作图 (2)
- vs2012 (2)
- 编码转换 (12)
- work_unicode (1)
- work_webbrowser (1)
- work_trade_quotes_login (1)
- c#学习 (38)
- wpf学习 (31)
- wpf快速学习 (1)
- VB学习 (1)
- NSIS (4)
- log4cpp (3)
- 学习web (1)
- 经验 (1)
- c_汇编 (1)
最新评论
VC中关于 0xcccccccc、0xcdcdcdcd和 0xfeeefeee 异常值说明
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()
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()
发表评论
-
manifest
2015-06-08 17:57 1895我遇到的问题: 将 Upload.exe Upload.exe ... -
log4CPP多线程支持的缺角(一)(转)
2015-06-01 10:59 1017log4CPP多线程支持的缺角 ... -
minizip压缩文件夹(转)
2015-06-01 10:26 2272#include <atlconv.h> / ... -
文件大小(转)
2015-06-01 10:08 499方法一: WIN32_FIND_DATA fi ... -
log4cpp环境变量
2015-05-13 15:32 681log4cplus.appender.DEBUG_MSG.Fi ... -
linux设置环境变量putenv() setenv() getenv()(转)
2015-05-13 15:28 1214linux设置环境变量putenv() setenv() ge ... -
VC学习:log4cpp
2015-05-12 15:37 812基于LGPL开源项目 Log4cpp ... -
VC异常:File:write.c Line:67
2015-05-12 15:29 750VC异常:File:write.c Line:67 路径没找 ... -
C++异常:rethrow【转】
2015-05-08 15:20 430C++异常rethrow【转】 http://se.csai. ... -
VC异常:Free Heap block xxxxxxxx modified at xxxxxxxx after it was freed(转)
2015-05-08 15:18 1202Free Heap block xxxxxxxx modifi ... -
VC异常:Free Heap block XXXXXX modified at XXXXXX after it was freed(转)
2015-05-07 15:41 3092Free Heap block XXXXXX modified ... -
析构函数后,还可以调用函数成员
2015-05-07 15:13 891析构函数后,还可以调用函数成员 类的所有的函数成员的是编译时期 ... -
[size=medium] c,c#判断socket是否断开[/size]
2015-03-17 13:28 1106c,c#判断socke ... -
时间转换
2015-01-08 11:55 493时间转换 public static long DateT ... -
C++ localtime函数需要注意的地方
2015-01-08 11:42 1016time_t tLast = pLastFQKLineIt ... -
TerminateThread
2014-11-13 14:04 694TerminateThread. 如线程内部不涉及空间开辟, ... -
VC退出线程的方法(转载)
2014-10-23 17:39 740VC退出线程的方法 标题很简单,但是要讨论的地方不少; ... -
创建文件夹CreateDirectoryA(file, 0);
2014-10-23 17:19 1522创建文件夹CreateDirectoryA(file, 0) ... -
heap corruption detected错误解决方法调试方法以及内存管理相关(转载)
2014-10-23 16:57 1174heap corruption detected错误解决方法调 ... -
edit control字体背景颜色
2014-10-23 16:56 713edit control字体背景颜色 属性必须 readon ...
相关推荐
该项目为2024华为昇腾AI原生创新算子挑战赛S1的参赛队伍0xCCCCCCCC所提交的Python设计源码,涉及969个文件,包括238个预编译的Python代码文件、215个Python源代码文件、156个Shell脚本、72个文本文件、56个CMake配置...
为了调试目的,研究者将Shellcode中的0x90909090替换为0xcccccccc,这样可以在执行到Int 3指令时暂停程序运行,便于进一步分析。 #### 覆盖分析 通过分析发现,在漏洞触发时,EBP的值等于0x6D634,而ESP的值等于0x...
`lea edi, [ebp-0C0h]`和`mov ecx, 30h`以及`rep stosd`的组合用于初始化分配的局部变量空间,填充以0xCCCCCCCC的值,这通常用于调试,便于检测未初始化的内存。 函数的主体部分,如`call Function::SetAge`和`call...
10. Debug和Release版本:文档还提到了在不同的编译配置中,指针值可能有不同的表现,比如在Debug模式下,可能会输出特定的填充值0xCCCCCCCC,表示未初始化的内存。而在Release版本中,这些未初始化的内存可能显示为...
3. **初始化局部变量**:汇编代码中的 `stos` 指令用于填充栈帧中的局部变量区域,这里用 0xCCCCCCCC 填充,这是一种调试技巧,用于标识未使用的内存。 4. **变量赋值**:`mov [ebp-4], 0`、`mov [ebp-8], 61h` 和 ...
在Debug版本中,局部变量如果没有显式初始化,编译器可能会默认给这些变量赋予特定的值,如0xcccccccc。这个问题在程序正式发布时通常不会出现,因为正式版本编译器会优化掉未初始化变量的问题。 在文件操作的上下...
改进ReceiveStr方法,comstat.cbInQue = 0xcccccccc的情况(如串口异常断开),会导致RXBuff初始化失败 by itas109 on 2017-02-14 http://blog.csdn.net/itas109 https://github.com/itas109 兼容ASCII和UNICODE...
CSerialPort ... ... 增加 ClosePort 增加 WriteToPort 两个...改进ReceiveStr方法,comstat.cbInQue = 0xcccccccc的情况(如串口异常断开),会导致RXBuff初始化失败 博客:blog.csdn.net/itas109 Email:itas109@qq.com
- 使用`move ax,0CCCCCCCCh`和`rep stos dwordptr [edi]`指令来初始化栈空间的值为`0xCCCCCCCC`。 5. **局部变量操作**: - 使用`move`和`add`指令对局部变量进行操作。例如,在`a = a + 3;`语句中,通过`move ax...