免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2564 | 回复: 5
打印 上一主题 下一主题

请教关于malloc和内存泄露问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-07 20:20 |只看该作者 |倒序浏览
一个进程使用C库函数malloc声请内存时,会调用brk()声请进程可用的堆线性区,然后分配物理内存映射到此线性区,
进程页表表项中会有对应的物理页描述。
当进程exit()结束时,会调用exit_mmap(),释放掉进程所有映射到可用线性区的物理页面,也即释放掉页表中对应的
所有物理页面,包括了由malloc声请来的内存。
那么为什么说malloc后没有free,程序结束会导致内存泄露呢?
谢谢!

论坛徽章:
0
2 [报告]
发表于 2008-10-07 21:24 |只看该作者
没人这么说,谁这么跟你说的,你可以扁他。

论坛徽章:
0
3 [报告]
发表于 2008-10-07 21:55 |只看该作者

回复 #1 xiaowulai 的帖子

的确,在进程的结束时会自动free掉malloc的内存,但在程序代码中不建议:
malloc之后不free;

第一: 代码可读性不好;

第二:我认为,如果这个进程长时间运行,虽然内存没有泄露,但内存没有得到充分利用;
从运行期的角度来讲,也相当于:内存泄露。

论坛徽章:
0
4 [报告]
发表于 2008-10-07 21:56 |只看该作者

回复 #1 xiaowulai 的帖子

程序结束后,会由内核回收

论坛徽章:
0
5 [报告]
发表于 2008-10-07 22:02 |只看该作者
那内存泄露是个什么概念?我理解错了?

论坛徽章:
0
6 [报告]
发表于 2008-10-07 22:05 |只看该作者
哦   理解错了 呵呵。。。
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP