VS2008下Debug和Release的区别

来源:互联网 发布:ubuntu snmp配置 编辑:程序博客网 时间:2024/05/16 10:00
区别1:
请看下面一段程序:

void test();

int _tmain(int argc, _TCHAR* argv[])

{

test();

return 0;

}


void test()

{

double dTest;

if (dTest)

{

cout<<"Test success"<<endl;

}

else

{

cout<<"test fail"<<endl;

}

}

如果该程序在debug下运行,编译是不会出错,运行时会出现如下错误,说dTest没有被初始化,有图有真相:

VS2008下Debug和Release的区别

而在release下不会出现错误,运行通过。至于为什么,如下:

Runtime Library:链接哪种运行时刻函数库通常只对程序的性能产生影响。调试版本的 RuntimeLibrary 包含了调试信息,并采用了一些保护机制以帮助发现错误,因此性能不如发布版本。编译器提供的 Runtime Library通常很稳定,不会造成 Release 版错误;倒是由于 Debug 的 Runtime Library加强了对错误的检测,如堆内存分配,有时会出现 Debug 有错但 Release 正常的现象。应当指出的是,如果 Debug有错,即使 Release 正常,程序肯定是有 Bug 的,只不过可能是 Release版的某次运行没有表现出来而已。

区别2:

 

Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。


如果想知道详细的信息,网上搜一下,有很多,包括两个版本下的区别,包括编译选项的、什么情况下会出错等等。


0 0