debug与release在编译时有那些地方不同?
比如象ASSERT(false)被release忽略后,会产生什么后果?
还有变量不符初值....

解决方案 »

  1.   

    release版不编译任何#ifdef _DEBUG之内的代码,包括ASSERT、TRACE这类的用于调试的宏。规则:如果ASSERT、TRACE宏不改变任何变量的取值,或者修改变量的值之后变量就不再被其他代码使用,则被release忽略之后不会出现任何问题。如果修改了变量值,则需要仔细考虑其正确性。release版不初始化变量也会带来问题,有时候错误很隐蔽,比如程序中用一个复杂的if分支初始化一个变量,可能有些分支没有初始化变量,很难发现。另外就是release做了优化,debug一般不做,debug还把调试信息写入执行文件中。有时候也会优化错误。
      

  2.   

    See the article below, u'll learn more about the issues and differences between Debug and Release builds, Enjoy !http://www.codeproject.com/debug/survivereleasever.asp
      

  3.   

    release速度快,体积小。但是没有调试信息。