C++初级之常见运行错误
2010-11-02 09:04:31 来源:WEB开发网1. 链接动态库出错。检查动态库的链接路径,使用绝对路径较不易出错。可以编辑文件: /etc/ld.so.conf 文件来增加或是修改链接路径。
2. 段错误。一般出现在使用类或是结构体空指针访问成员变量和函数时错误。在调用需要返回指针的函数时,一定要使用assert语句检查返回值是否为NULL。尽可能使用assert来检查不可能情况的发生,也可以说是参数的合法性。
3. 出现死循环。对于for语句,尽量不要在循环体内部修改循环使用的条件变量。当确实需要修改时,要注意不要造成死循环。总之,一定要确保循环体能够正常结束,如使用break, return 等。最好不要在for循环体内改变循环变量。
4. If语句失效。当出现这种情况时,先检查是否在if语句后面多加了分号(;)。加分号的语句,会正常if 语句失效,下面的域{}必然总是被执行。
5. 变量失效,尤其是指针变量失效。检查变量的赋值语句,是否出现了把 = 写成 = = 。
6. 程序无法结束(死锁)。如果程序中使用了锁变量,请检查是否是由于锁变量使用不合理,造成死锁现象。一般在使用锁变量时,尽可能使锁域最小,即使用域符号{}限制锁的有效范围。
7. 指针释放(double free)。一般这样的情况出现在多个指针指向同一个内存块时,多次释放了指针。检查时,搞清楚指针之间浅拷贝的关系。一般只由一个指针来管理内存块,其它的指针(称为“引用”)不必关心内存块的new 和delete,只需使用即可。在ACE中,消息块是典型的浅拷贝例子。为了实现高效共享,消息块是多指针对应一个内存块的关系。
8. 变量初始化。对于一个没有初始化的变量其值是不定的,而不是想象中的0,或是其他。总是定义的变量最好在定义的时候,给予初始化,没有初始化也没有赋值的变量值是一个未知的数。正因如此,定义类和结构体时,一定要定义默认的构造函数,这样可以在定义变量的时候自动初始化。做好初始化,可以减少很多错误的出现。
更多精彩
赞助商链接