概念:
内存泄漏是指程序猿自己从堆上申请空间,没有释放
后果:
- 程序运行后置之不理,并且随着时间的流失消耗越来越多的内存(比如服务器上的后台任务,尤其是嵌入式系统中的后台任务,这些任务可能被运行后很多年内都置之不理);
- 新的内存被频繁地分配,比如当显示电脑游戏或动画视频画面时;
- 程序能够请求未被释放的内存(比如共享内存),甚至是在程序终止的时候;
- 泄漏在操作系统内部发生;
- 泄漏在系统关键驱动中发生;
- 内存非常有限,比如在嵌入式系统或便携设备中;
- 当运行于一个终止时内存并不自动释放的操作系统(比如AmigaOS)之上,而且一旦丢失只能通过重启来恢复。
检测的方法:
1.调用函数int _CrtCheckMemory( void );
确定分配在调试堆得内存块的完整性(仅限调试版本)
返回值: 成功, 返回true
;失败,返回false
。
2.在申请空间完成后,记得释放
释放时要注意匹配使用:malloc/free,new/delete,new T[]/delete []T
解决方法:
1.养成良好的变成习惯,申请后记得释放;
2.使用智能指针管理系统;
3.利用内存池;