14年5个月前IP:未同步
438221
3楼
这样的话…就只能从理论层面范范的说了。

首先,所谓release模式呢,即为发布版本。
脱离环境可以在操作系统独立运行,编译器生成release版本的时候会做一些优化和精简。

帧指针的省略就是其中的一种精简方式,
函数调用原理来说,函数调用过程中,会将函数信息存于栈中,函数信息通常包括参数,返回等。
如果出现函数实现和函数声明不匹配,程序必然down掉。(常见的run time error起因)

debug模式下,栈的访问是靠寄存器EBP保存的地址来访问的,这样的访问通常比较安全。
而release模式下,优化会省略掉EBP栈基址指针,通过一个全局指针来访问栈,就有可能出现程序release版本down掉的结果。

LZ的汇编码已经反应出两种编译版本,函数指针取址的区别了,所以我觉着这种可能大一些。

具体解决办法,我用的不是私人的电脑没有vc环境,建议多上网搜搜,应该是改release模式里边的一些参数
好久不用 已然记不清楚了 呵呵。。
+100
科创币
phpskycn
2012/08/13
+100
评论
文号 / 438221

浪迹天涯
名片发私信
学术分 0
总主题 2 帖总回复 23 楼拥有证书:笔友
注册于 2012/08/08 13:21:27最后登录 2018/01/10 01:04:34
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的