C++中内存泄露小结
来源:互联网 发布:百万公众网络测试答案 编辑:程序博客网 时间:2024/05/18 20:37
C++中内存泄露可能有以下几点原因:
1、new与delete没有配对使用。在堆中开辟内存内存,结果在使用结束时或者析构函数中没有delete。‘
2、delete不完全,例如,构造了一个三维的整型指针数组(需要在三个维度分别new),然而在delete的时候只是把第一维或者第三维的数组内存释放。
3、重复delete,两个指针分配了同一块内存,结果都对这块内存进行了释放。
比较常见的两种操作:1、int *q = new int [10]; int* p = q; delete[]q;delete[]p; 2、调用系统默认的拷贝构造函数,然后重复析构。
尤其是free或者delete一次之后,内存管理器会对内存进行回收处理,但是如果没有及时赋NULL,野指针可能会指向任意内存地址,再次释放该地址所指向的内存块,如果在该内存块中记录了内容,可能程序会立马挂掉,但是如果该内存块暂时没有分配内容,程序不会当场崩溃,但是后期可能会对其进行写操作,那就是可能出现在某个看 似语法正常,逻辑正常的代码块中出现bug或者根部不出现bug,但是程序最终运行结果就是不对的状况这种情况就要棘手的多。
4、基类指针指向子类对象,而基类析构函数的不是虚函数,子类对象释放内存时不会调用基类析构函数,造成内存泄露。
阅读全文
0 0
- C++中内存泄露小结
- IE内存泄露小结
- 内存泄露小结
- android 内存泄露 小结
- GDI内存泄露小结
- objective-c中内存小结
- 安卓内存泄露小结
- C/C++中内存释放及内存泄露的检测
- C 检测内存泄露
- C/C++内存泄露
- c/c++内存泄露
- c/c++内存泄露
- 内存泄露-C
- C/C++内存泄露
- C/C++中内存管理小结
- C++中内存泄露
- java中内存泄露
- C/C++内存泄露--工程中如何尽量避免
- thinkPHP的条件查询、动态查询和聚合函数
- NIST指纹数据识别(二)数据处理
- 百度贴吧推广-创业公司推广的流量杀手
- 浏览器缓存机制
- Linux通过rdesktop远程连接Windows桌面
- C++中内存泄露小结
- GCC 中的编译器堆栈保护技术
- 二叉树的基本操作
- OpenSSL中文手册之ERR库详解
- [第六季]3.一个表单验证的例子
- 动态规划题目总结
- 笨方法学Python 习题 31: 作出决定
- [bzoj1901][树套树]Zju2112 Dynamic Rankings
- MySQL错误:Last_IO_Errno: 1236处理办法