变量初始化的问题在C/C++里很简单,
就是一个 XXX xxx = 0;或 bool xxx = false/true;
一般在定义的时候就会写上,这是个很好的习惯,但如果是动态分配的呢,你肯定会说可以用memset( &XXX, 0, sizeof(XXX) );这样的语句来对其作初始化。
呵呵,你可能会说这个问题多么简单,没什么难度么,可以你是否在VC下写代码时,忘了加上这一句呢。然后再Debug模式下运行,发现程序没什么问题。然后如果你细心的话,会在Release下编译运行,看看有没有什么问题,可能没有,可能执行了几次,没发现什么问题,但突然有一次程序崩溃了,你然后在Debug模式下调试,怎么也没发现出现问题,这个问题在Debug下不可复现?-_-!。那怎么办,再换到Release下,加调试信息,通过日志来观察?
可能你很幸运,你加的调试信息打印出了有问题的数据段,你发现有一部的数据被动态分配后,没有被初始化,而是一些随机的数值,这时,你才恍然大悟,哦。。。,问题原来是出在这里,怪不得呢!
     呵呵,说了这么多,其实就是想提醒大家,如果在测试代码的时候如果遇到一些随机出现的问题,首先可以去检查一下变量的初始化,特别是动态分配的数据,这个是你很可能遗漏的。另外,VC6.0下的Debug模式和Release模式在对变量的初始化的处理上是不同的,在Debug下,未初始化的变量会被初始化,至于值不一定是0,而在Release下则没有,所以有些问题在Debug下是不会出现,而只有在Release下才会出现。