一.内存泄漏:
1.什么是内存泄漏:内存泄漏是指在程序中申请了内存没有调用释放函数,导致内存没有被系统回收,程序内存会不断增大,最后导致系统内存不足,程序卡顿或崩溃。
2.内存泄漏的原因:
(1)调用new或者malloc申请内存后没有主动调用delete或者free。
(2)在使用多态特性时,基类的析构函数没有设置为虚函数,导致派生类的析构函数没有被调用。
#include <stdlib.h>
#include <iostream>
class Base {
public:
Base() {
id = new int;
}
virtual ~Base() {
std::cout << "base delete \n";
delete id;
}
private:
int* id;
};
class Student: public Base {
public:
Student() {
name = new char[20];
}
~Student() {
std::cout << "student delete \n";
delete[] name;
}
private:
char* name;
};
int main()
{
Base* p = new Student(); //Base类型的指针
delete p; //没有调用Student的析构函数
system("Pause");
}
(3)由于程序中断导致delete或free没有被调用。
#include