高手请进。

wildmen 2006-07-14 05:22:16
HEAP[EmrTest.exe]: Invalid Address specified to RtlSizeHeap( 00140000, 10043A84 )
HEAP[EmrTest.exe]: Invalid Address specified to RtlFreeHeap( 00140000, 10043A84 )

一个VC++ 编写的界面程序,里面含有ActiveX控件, 在调试模式下出现 int 3 中断。(ntdll.dll 模块)
,就会弹出两个中断消息对话框。继续执行不影响程序运行。

很想知道为什么会出现这个中断, 但对汇编不太懂。请达人解释。
...全文
282 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
i ama 2006-07-15
  • 打赏
  • 举报
回复
int 3是Intel 386的Debug中断指令。这个一般都是写在VC Debug版本的ASSERT()宏中,
它的作用就是执行到ASSERT的时候,如果ASSERT没通过的就产生一个断点,相当于进入调试模式。因为它不改变CPU寄存器的其他内容,所以你的程序可以继续执行,在Release版中ASSERT是不会编译的,Release版中结果要么出现红叉叉警告然后程序崩掉,要么没事继续执行。
大熊猫侯佩 2006-07-14
  • 打赏
  • 举报
回复
RtlSizeHeap 接触了非法的内存空间?包含的是什么 ActiveX 控件?
接挂 RtlSizeHeap 断点,跟踪下看。有可能是该 控件有 bug .
Ptero 2006-07-14
  • 打赏
  • 举报
回复
VC++ Debug版中把未初始化的内存全部用0xCC填充,0xCC是int3的机器码。
这样程序一旦访问了未初始化的内存就会产生int3中断,便于发现错误。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧