程序不稳定是因为C++基础不扎实
2015-06-03 22:24
369 查看
最近开发的程序,逻辑上都实现了,但是感觉运行不稳定,程序时不时崩溃(不是逻辑运行不正确),至少找出2个错误:
情况1:
char* szRemoteReal = new char[MAX_LENGTH]; memset(szRemoteReal, 0, MAX_LENGTH);
一定要memset,否则里面内容是随机的,岂不出问题?
情况2:
char* szRemoteReal = new char[MAX_LENGTH];
一定要delete[],而不是delete
情况3:
野指针,这是最危险的情况,这个我倒是已经理解了:http://www.cnblogs.com/findumars/p/3698013.html
情况4:
memset(p, 0, sizeof(p));
初始化长度不正确
情况5:
删除不当指针,也会造成错误。有些对象其实是指向系统区的,不一定是自己可以删除的(比如没有初始化指针就删除,此时指向0xCDCDCDCD,就当场崩溃了)
情况6:静态变量未初始化就使用
情况7:在没有上锁的情况下,使用解锁语句
总结:程序不稳定有很多原因,上次看到过一篇文章:
情况1:
char* szRemoteReal = new char[MAX_LENGTH]; memset(szRemoteReal, 0, MAX_LENGTH);
一定要memset,否则里面内容是随机的,岂不出问题?
情况2:
char* szRemoteReal = new char[MAX_LENGTH];
一定要delete[],而不是delete
情况3:
野指针,这是最危险的情况,这个我倒是已经理解了:http://www.cnblogs.com/findumars/p/3698013.html
情况4:
memset(p, 0, sizeof(p));
初始化长度不正确
情况5:
删除不当指针,也会造成错误。有些对象其实是指向系统区的,不一定是自己可以删除的(比如没有初始化指针就删除,此时指向0xCDCDCDCD,就当场崩溃了)
情况6:静态变量未初始化就使用
情况7:在没有上锁的情况下,使用解锁语句
总结:程序不稳定有很多原因,上次看到过一篇文章:
相关文章推荐
- C/C++文件操作1——FILE结构体
- (C++)关于i++和i++的左值、右值问题
- C语言--乱写C语言
- 无限大整数相加算法的C语言源代码
- (C++)i++和++i,哪个效率高一些
- C++面试宝典(整理版)2
- C++STL技术原理浅析与应用基础之vector
- 一个C语言问题
- C 内存
- C++面试宝典(整理版)1
- Binary Tree Level Order Traversal II --leetcode C++
- [C++] 使用基于范围的for循环操作string
- Singleton单例模式--C++实现
- C++ 智能指针详解
- 【C语言】猜拳游戏,人与电脑对决
- 深入理解C++中的mutable关键字
- 《C++primer》 第五版 第一章笔记
- C++程序设计课本习题
- C++中关于操作符重载诸多问题
- C++STL中vector容器的用法