内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放。
内存泄漏的场景
1.malloc和free未成对出现;new/new []和delete/delete []未成对出现;
2.未定义拷贝构造函数或未重载赋值运算符,从而造成两次释放相同内存的做法.
如类中包含指针成员变量,在未定义拷贝构造函数或未重载赋值运算符的情况下,编译器会调用默认的拷贝构造函数或赋值运算符,以逐个成员拷贝的方式来复制指针成员变量,使得两个对象包含指向同一内存空间的指针,那么在释放第一个对象时,析构函数释放该指针指向的内存空间,在释放第二个对象时,析构函数就会释放同一内存空间.
3.没有将基类的析构函数定义为虚函数.
解决办法:
判断内存泄漏的办法
a.在Linux系统下,可以使用valgrind、mtrace等内存泄漏检测工具。
参考Linux环境下内存泄露检测_小飞侠hello的博客-CSDN博客
b.在Windows下,用VLD.