设为首页 加入收藏

TOP

VC6的栈平衡检查
2014-11-23 21:25:04 来源: 作者: 【 】 浏览:59
Tags:VC6 平衡 检查

栈的有序性依靠每个函数都遵守栈的使用规则,保证函数返回时栈指针(ESP)的值与进入函数时一致,即保持栈平衡。否则的话就会导致栈溢出,可能引起安全问题或程序崩溃。

VC6会自动在每个函数的末尾插入指令来调用一个名为_chkesp的函数,_chkesp是C运行库(CRT)中的一个函数,用来检查栈指针的完好性,检查方法是比较ESP和EBP寄存器的值,看其是否相等,如果相等则通过,否则就准备参数调用_CrtDbgReport函数报告错误。编译器的编译选项/GZ用来控制是否插入栈指针检查函数。

VC8的_RTC_CheckEsp函数与_chkesp原理和工作方法是一样的,只是改变了函数名称和报错的方式

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Visual C++ 2010 管理源文件 下一篇一般函数指针和类的成员函数指针

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: