1。工程代码可能有问题
2。Release去掉了调试信息,对代码进行了优化,你可以把优化选项关闭看看

解决方案 »

  1.   

    1。工程代码可能有问题
    2。Release去掉了调试信息,对代码进行了优化,你可以把优化选项关闭看看
    3。多用Try Catch
      

  2.   

    release 对变量初始化和DEBUG是不一样的,我以前忘了赋初值,结果就出现这样的莫名其妙
      

  3.   

    to :superprogman:
    没有
    与这有关吗?
      

  4.   

    一般是由于指针没初始话或溢出(for多了个=,给的char buf太小等等)。
      

  5.   

    一般是某个变量没有赋初始值,引起数组或指针越界。在DEBUG版中,VC会缺省赋一个初始值,一般是0,但在RELEASE版本中,如果没有初始值,那么这个变量的值是不确定的,可能是负数。
    还有一种情况是,在DEBUG版本中,VC在每个变量后保留一点空间,如short int类型,实际运行时,在内存中可能有占据4个字节,如果你把long int赋给它,不会产生越界,但在RELEASE版本中,就没有这么幸运了,short int在内存中就占两个字节,其它变量紧跟在它后面,如果赋给它一个long int,就把后面的变量值冲掉了。
    如果是多线程程序,看看RELEASE版本链接的库对不对。这是我第一次回答问题,请多多关照。
      

  6.   

    检查 ASSERT 语句,要注意,release下ASSERT是不执行的,很多类似问题缘由于此。
      

  7.   

    另外我发现如果直接用CFileDialog而不给他分配strFileName的话也会有这个问题。