VC6的栈平衡检查

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

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

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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值