欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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 就变得很困难,所以大家一定要养成良好的内存使用习惯,及时释放不再使用的内存。

相关标签: 内存溢出