内存泄漏是指由于疏忽或错误,程序没有释放掉不再使用内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了堆该段内存的控制,因而造成了内存的浪费。
对于C++这种没有垃圾回收机制的语言来说,主要关注两种类型的内存泄漏:
(1)、堆内存泄漏:比如使用new、malloc等从堆中分配的资源,没有用delete和free删掉。
(2)、系统资源泄漏:系统分配的资源如socket等没有被释放掉。
解决方法:使用智能指针,智能指针可以自动删除分配的内存。
智能指针的种类:
待补充。