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没有被初始化,有图有真相:
而在release下不会出现错误,运行通过。至于为什么,如下:
Runtime Library:链接哪种运行时刻函数库通常只对程序的性能产生影响。调试版本的 Runtime Library 包含了调试信息,并采用了一些保护机制以帮助发现错误,因此性能不如发布版本。编译器提供的 Runtime Library 通常很稳定,不会造成 Release 版错误;倒是由于 Debug 的 Runtime Library 加强了对错误的检测,如堆内存分配,有时会出现 Debug 有错但 Release 正常的现象。应当指出的是,如果 Debug 有错,即使 Release 正常,程序肯定是有 Bug 的,只不过可能是 Release 版的某次运行没有表现出来而已。
区别2:
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
如果想知道详细的信息,网上搜一下,有很多,包括两个版本下的区别,包括编译选项的、什么情况下会出错等等。