内存泄漏(Memory Leak) - 是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
内存泄漏代码如下:
#include <stdlib.h>
#include <iostream>
#include <Windows.h>
using namespace std;
void A_live() {
int * p = new int[1024];
//一直使用
p[0] = 0;
//申请的内存必须要“还”
}
int main(void) {
for (int i = 0; i < 100000; i++) {
A_live();
Sleep(50);
}
system("pause");
return 0;
}
内存泄漏运行中的程序状态(未打印情况下),如下图所示:
非正常情况下使用内存已经不断增加泄漏,如下图所示:
正常情况下使用内存,示例代码如下:
#include <stdlib.h>
#include <iostream>
#include <Windows.h>
using namespace std;
void B_live() {
int * p = new int[1024];
//正常的使用
p[0] = 0;
delete[] p; //还内存
}
int main(void) {
for (int i = 0; i < 100000; i++) {
B_live();
Sleep(50);
}
system("pause");
return 0;
}
正常使用内存的程序不会泄漏而会归还,如下图所示: