之前写过一段代码,能在VS2013的Release下运行,但是不能在Debug下运行,所以又深入学习了一番,下面是学到的经验。(橙色表示引用,红色表示重点)
VS中的程序有Debug和Release两个版本,其不同之处:
综述:
Debug程序通常比Release程序运行的慢,尤其在处理视频方面,Release要比Debug快很多。在我看的资料中,似乎在Release模式下容易出现这样的问题:变量虽然初始化,但是在看其值时却发现是一个随机的数,并不是初始化时的赋予这个变量的值。其原因大概是这样的:
Debug在初始化变量时,将每个字节位都赋成0xcc,代码存在错误在debug方式下可能会忽略而不被察觉到。debug方式下数组越界也大多不会出错。
Release在初始化变量时,其赋值是近似于随机的。如果你的程序中的某个变量没被初始化就被引用,就很有可能出现异常:
用作控制变量将导致流程导向不一致;
用作数组下标将会使程序崩溃;
更加可能是造成其他变量的不准确而引起其他的错误。
所以在声明变量后马上对其初始化一个默认的值是最简单有效的办法,否则项目大了你找都没地方找。
1、Debug通常称为调试版,包含调试信息,不会做任何优化,便于程序员调试程序,有的错误类似数组越界,Debug模式下,一般不会报错,但是Release就会;只有DEBUG版的程序才能设置断点、单步执行、使用 TRACE/ASSERT等调试输出语句
2、Release称为发布版本,会进行各种优化,不包含提示信息,使得程序在代码大小和运行速度上都是最优,一般不允许用户在发布版调试,即在Release下,不允许调试。
参考:vs中debug和release版本的区别 - 一本书的伤痕 - 博客园