初始化的问题
原创
©著作权归作者所有:来自51CTO博客作者xulin_2005的原创作品,请联系作者获取转载授权,否则将追究法律责任
变量初始化的问题在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下才会出现。
下一篇:设计模式之State学习心得
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
vuescrollto 初始化 vue的初始化
前言vue3.x比vue2.x在很多方面都优于vue2.x,比如vue3.x的可扩展性;下面我们一起学习一下vue3.x源码的初始化过程测试代码<div id="app"> {{title}} <comp></comp></div><script src="../dist/vue.global.js"></script
vuescrollto 初始化 javascript 开发语言 ecmascript 初始化