免费注册 查看新帖 |

Chinaunix

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

[C] malloc()申请内存能否自动释放 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-19 11:27 |只看该作者 |倒序浏览
如果在linux下用C写了一个非常简单的小程序
就是用malloc()申请一块很大的动态内存
但是在程序退出时不释放
那么,这块内存会不会自动释放?
还是再等下次重启才能被释放??

论坛徽章:
0
2 [报告]
发表于 2012-07-19 11:31 |只看该作者
回复 1# shell_albert


    系统会帮你搞定的。

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
3 [报告]
发表于 2012-07-19 12:50 |只看该作者
如果系统不搞定,那黑客就太好当了。

论坛徽章:
0
4 [报告]
发表于 2012-07-19 21:27 |只看该作者
stackoverflow 有比较详细解释,现代操作系统应该会帮你回收内存的。。。
但是如果写个不断申请内存的程序,系统最终用完内存,要用swap,会怎么办,有没有人试过。。?

论坛徽章:
0
5 [报告]
发表于 2012-07-19 22:08 |只看该作者
内核会oom-kill掉这个进程

论坛徽章:
0
6 [报告]
发表于 2012-07-20 11:21 |只看该作者
:wink: 那进程独立性意义就没了,内存留在系统里。。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2012-07-20 15:57 |只看该作者
jetking 发表于 2012-07-19 22:08
内核会oom-kill掉这个进程


那个oom-killer往往不会干掉这个进程
某次我的程序吃了4G内存,内核把所有已经mount的分区瞬间全给umount了(没有sync)
程序崩溃前的关键的错误日志全没了
没有SWAP分区,内存用完后,内核立即变成了疯狗,误杀一大片

论坛徽章:
1
白羊座
日期:2013-09-18 22:02:26
8 [报告]
发表于 2012-07-20 19:47 |只看该作者
你先看看exit函数会做什么事吧。另外,你没有调用exit。编译器会给你调用exit族中的另外一个函数。

论坛徽章:
0
9 [报告]
发表于 2012-07-21 20:56 |只看该作者
操作系统会回收的。不过自己还是自己释放。释放了内存,也要把指向这块内存的指针指向NULL,防止程序不小心使用。回复 1# shell_albert


   

论坛徽章:
0
10 [报告]
发表于 2012-07-22 10:04 |只看该作者
会自动回收,我们的程序里面 有启动就申请内存的,而且会一直使用下去,所以我们自己不会去释放,等到程序被退出,系统才会回收。我们自己不会处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP