教训1:变量的初始化
在项目的尾期遇到了一个问题,程序编译出的Release版本,交给测试人员,总是出现一些莫名其妙的错误,而且这些错误没有规律可循,十分诡异。而且错误之间没有规律。刚开始我总是在本机的Debug版本下试图重现,可怎么都重现不了。
试图从逻辑上发现bug,确实修改了一些bug,明明没有问题了,可是一到测试那里,问题又重现了。
痛苦了好几天,百思不得其解。后来在Release下,重现了一个错误,通过附加进程,发现是一个用于控制的int型数字不对,突然想起之前看过的文章,说在Release下,对变量的初始化和在Debug下是不同的,一下子豁然开朗,原来是变量没有初始化做的怪!
http://www.360doc.com/content/10/0618/10/105968_33744293.shtml
1. 变量。
大家都知道,debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc,而release的赋值近似于随机。如果你的程序中的某个变量没被初始化就被引用,就很有可能出现异常:用作控制变量将导致流程导向不一致;用作数组下标将会使程序崩溃;更加可能是造成其他变量的不准确而引起其他的错误。所以在声明变量后马上对其初始化一个默认的值是最简单有效的办法,否则项目大了你找都没地方找。代码存在错误在debug方式下可能会忽略而不被察觉到。debug方式下数组越界也大多不会出错,在release中就暴露出来了,这个找起来就比较难了。
把程序中,需要用到的变量,都做了初始化,果然问题没有了。
总结:
编程不是看书就能精通的,经验非得碰个头破血流才能记牢!别人的经验看一百遍也意识不到重要性,只有自己碰到了这个坎,踏过去了才能醒悟!
经验不是凭空得到的,每个编程老手都是从无数的问题、教训中杀出来的!
遇到问题不是麻烦,应该庆幸遇到了问题,感谢问题,才能使自己涨经验!