|
发表于 2008-10-7 21:51:37
|
显示全部楼层
Post by shenjiajia1225;1891468
一个进程使用C库函数malloc声请内存时,会调用brk()声请进程可用的堆线性区,然后分配物理内存映射到此线性区,
进程页表表项中会有对应的物理页描述。
当进程exit()结束时,会调用exit_mmap(),释放掉进程所有映射到可用线性区的物理页面,也即释放掉页表中对应的
所有物理页面,包括了由malloc声请来的内存。
那么为什么说malloc后没有free,程序结束会导致内存泄露呢?
谢谢!
内存泄露的问题在7x24小时不退出的程序中才比较严重
程序退出肯定是会free的。但并非所有程序都会退出。也并非所有电脑都会每天关机。 |
|