原因内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费
检测 1. windows1.调用了malloc/new等内存申请的操作,但缺少了对应的free/delete
2.在释放对象数组时在delete中没有使用方括号
3.对于构造函数缺少相应的析构函数
2. linuxWindows平台下面Visual Studio 调试器和 C 运行时 (CRT) 库为我们提供了检测和识别内存泄漏的有效方法,原理大致如下:内存分配要通过CRT在运行时实现,只要在分配内存和释放内存时分别做好记录,程序结束时对比分配内存和释放内存的记录就可以确定是不是有内存泄漏。定位内存泄漏的技术涉及在关键点对应用程序的内存状态拍快照。 CRT 库也提供一种结构类型 _CrtMemState,可用于存储内存状态的快照:
linux中的mtrace也提供了类似的功能。当然在linux中推荐使用valgrind工具去检测兵定位内存泄漏



