C 语言用 while 循环来写一个内存泄漏的例子
程序员文章站
2022-07-13 13:16:13
...
#include <stdlib.h>
#include <stdio.h>
int main(){
while(1){ //死循环
malloc(1024); //分配1024个字节的内存
}
return 0;
}
while 循环的条件是 1,始终成立,循环会一直进行下去,永无休止,所以是一个“死循环”。
每次循环,程序都会向计算机申请 1024 个字节(1KB)的内存,并且不会释放;循环到第 1024 次时,程序就占用了 1024*1024 个字节(1MB)的内存;循环到 1024*1024 次时,程序就占用了 1024*1024*1024 个字节(1GB)的内存。
不要害怕,亲自跑一下试试,打开 Windows 下的任务管理器,可以看到内存的使用率会飙升,稍等片刻后程序会被终止。Windows 的内存管理机制发现我们的程序占用内存太多,会让它崩溃,防止系统卡死(其它的操作系统也有相应的措施)。
内存泄漏是C语言程序很常见的一个问题,当程序规模比较大时,有时候找到这个 Bug 就变得很困难,所以大家一定要养成良好的内存使用习惯,及时释放不再使用的内存。
上一篇: android内存溢出的解决方法(转)
下一篇: Oracle RMAN 清除归档日志