C++内存泄露
来源:互联网 发布:公司网管必备软件 编辑:程序博客网 时间:2024/06/03 20:57
C++中的内存泄露一般指堆中的内存泄露。堆内存是我们手动malloc/realloc/new申请的,程序不会自动回收,需要调用free或delete手动释放,否则就会造成内存泄露。内存泄露其实还应该包括系统资料的泄露,比如socket连接等,使用完后也要释放。
内存泄露的原因:
总结下来,内存泄露大概有一下几个原因:
1、编码错误:malloc、realloc、new申请的内存在堆上,需要手动显示释放,调用free或delete。申请和释放必须成对出现malloc/realloc对应free,new对应delete。前者不会运行构造/析构函数,后者会。对于C++内置数据类型可能没差别,但是对于自己构造的类,可能在析构函数中释放系统资源或释放内存,所以要对应使用。
2、“无主”内存:申请内存后,指针指向内存的起始地址,若丢失或修改这个指针,那么申请的内存将丢失且没有释放。
3、异常分支导致资源未释放:程序正常执行没有问题,但是如果遇到异常,正常执行的顺序或分支会被打断,得不到执行。所以在异常处理的代码中,要确保系统资源的释放。
4、隐式内存泄露:程序运行中不断申请内存,但是直到程序结束才释放。有些服务器会申请大量内存作为缓存,或申请大量Socket资源作为连接池,这些资源一直占用直到程序退出。服务器运行起来一般持续几个月,不及时释放可能会导致内存耗尽。
5、类的析构函数为非虚函数:析构函数为虚函数,利用多态来调用指针指向对象的析构函数,而不是基类的析构函数。
0 0
- C 检测内存泄露
- C/C++内存泄露
- c/c++内存泄露
- c/c++内存泄露
- 内存泄露-C
- C/C++内存泄露
- ★【C/C++】概念:内存泄露与内存泄露检测
- Linux C内存泄露检测工具
- c/c++ 内存泄露检测
- c语言内存泄露示例
- c内存泄露工具-memleak
- c语言内存泄露示例
- Linux C内存泄露检测工具
- Linux C内存泄露检测工具
- C/C++ 内存泄露检测
- Linux C内存泄露检测工具
- C深入—>内存泄露
- c语言内存泄露示例
- linux网络编程 TCP/IP简述
- 最小生成树-Prim算法和Kruskal算法
- 企业级应用系统引用到的技术点总结
- 用MathType编辑物理公式的方法
- hdu1498 50 years, 50 colors--匈牙利算法
- C++内存泄露
- Jvascript读书笔记:函数定义和函数调用
- php生成验证码
- 快速排序简介
- adams两小球碰撞试验
- Python 集合(set)类型的操作——并交差
- php安装ssh2扩展控制linux,模拟阿里云web控制台
- shell脚本中的read
- CVPR 2016论文快讯:目标检测领域的新进展