一个在DEBUG运行正常的程序,到了RELEASE就不能正常运行了,这也许不奇怪。
后来我将RELEASE版本加上调试代码就没错,不加就有错,实在是头疼。
后来没办法只能采取AFXMESSAGEBOX打印变量的土办法来解决,后来才发现问题出在一个未初始化的引用变量上,DEBUG模式下一个未初始化的INT值是-4*****等等负值,而RELEASE模式下居然变成了无符号的正值??

解决方案 »

  1.   

    Debug下MFC会对变量进行初始化,而Realse是不会的。
      

  2.   

    release  会优化代码。  最好是自己初始化
      

  3.   

    变量定义好之后就初始化,这是非常重要的编程原则。
    Debug模式下,变量,内存,编译器会初始化,譬如经常看到new出来的内存里面都是CD CD CD,烫烫烫……什么的,就是Cleared Data的意思。
    但是Release模式下,不会进行初始化,原来放的什么东西还是什么东西。
      

  4.   

    那直接用DEBUG编译的程序,这样行否?
      

  5.   

    为了方便调试,编译器会自动为debug版的变量赋值,例如一个未初始化的字符数组会填充CDCD...