好好查一下你的变量,出错的原因是有的变量没有初始化,在DEGUG下系统赋的值和RELEASE下赋的值不一样。

解决方案 »

  1.   

    是不是Release版要包含的MFC42的库与Debug版包含的库是一样的了?
      

  2.   

    re版失败得一个原因是存在着不可识别得别名,只要使用关闭assume no aliasing得方式重新建立re版即可,如果成功则定位该隐藏得别名。
    在一定环境下关闭一个局部变量需要一页以上得堆栈空间得函数得堆栈检查,可能引起re版得失败,而de版在使用了堆栈检查时则运行很好,解决办法是重写该函数,以触及每一个新得堆栈内存页或插入一个check_stack标记。
    另外在调试和发行模式下对new得编译也不同,在de版中要增加额外得保护字节到内存中,在发行版中则省略,任何存在保护字节得代码段均要重写。
    还有一些优化选项可能会引起问题,如下表:
    全局优化        初始化内部(局部)变量失败
    内联扩展        初始化内部(局部)变量失败
    帧指针忽略      不正确得函数原型导致堆栈崩溃
    产生内部函数内联   初始化内部(局部)变量失败
    改进浮点一致性     在值比较中算法依赖与显式精度
      

  3.   

    忘了说了,de版和re版的lib苦和dll库都应使用相应的de版和re版,看看你的project setting 吧,看是不是link的时候没有正确跟相应的库连接。
      

  4.   

    先用BoundChecker或Purify看看再说吧, 自己推理太慢了
      

  5.   

    release版也可以生成symbols的,再看看出问题时的堆栈里有什么