个人记录:debug 到 Release版本crash需要注意的几点

问题由来:

       debug版本运行正常,但是到Release版本的时候出现Crash;

提示:Release版本调试方法      

    1.工程项目上右键 -> 属性
    2.c++ -> 常规 -〉调试信息格式    选  程序数据库(/Zi)或(/ZI), 注意:如果是库的话,只能(Zi)
    3.c++ -> 优化 -〉优化            选  禁止(/Od)
    4.连接器 -〉调试 -〉生成调试信息 选  是 (/DEBUG)

个人总结的几个可能的原因:

      1.debug版本的配置,没有运用到Release版本。

      具体经历:在程序中使用了dynamic_cast, 来向下转化类型(父类转向子类),而vs2005 默认是关闭运行时类型检测的(属性->c/c++->语言->启用运行时类型信息),从                 而导致程序Crash。结果配置了debug,而Release 版本没有配置导致Crash;

     2.主程序释放Dll 中申请的内存空间(跟运行时库选择MT,MD有关:c/c++->代码生成->运行时库)

         在这个问题上MT,MD的区别主要。如果采用MD模式:使用的是同一个堆,不存在A堆申请,B堆释放的问题;如果采用MT这会出          现crash. MT,MD详解:http://www.cnblogs.com/cswuyg/archive/2012/02/03/2336424.html (依据文章,debug也应该会出现,但        本人当时遇到的情况确实是debug 正常运行Release有问题,可能也是两个版本配置不一样导致的)

     3.无效内存的访问:越界,未初始化导致的野指针,删除以后没有置空的无效指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值