忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 3191 | 回复: 16

[C] malloc后完全不使用该内存的情况 [复制链接]

论坛徽章:
2
嗜杀者
日期:2015-11-25 10:44:3015-16赛季CBA联赛之北京
日期:2016-03-20 19:50:17
发表于 2018-03-21 18:28 |显示全部楼层
Linux下

情况1
某程序 malloc() 出1G内存,完全不使用(读写)

情况2
其它和情况1相同,只是没有这个malloc()

情况1 和 情况2 程序、操作系统的行为会有哪些不同吗,不同场景会有一些特殊区别吗?

完全不使用的话,OS也不会分配真实的物理内存吧。
我能想到的就是 情况1 多了一点点管理开销来记录这1G,不过貌似也没啥实际影响。

大家有啥看法?

论坛徽章:
130
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2018-03-21 21:44 |显示全部楼层
malloc() failed ?

论坛徽章:
0
发表于 2018-03-21 22:44 |显示全部楼层
老实说我没明白楼主想问什么啊?

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
发表于 2018-03-22 09:06 |显示全部楼层
本帖最后由 jeppeter 于 2018-03-22 09:09 编辑

回复 1# hitcser01

如果完全不用的话,那这个其实内核只是对这个进程进行了记账,没有真的直接给钱。这个开销其实很小,小到大概实际支出只有十几K而已,
你肯定要问,什么时候兑现,这个就是在你读或者写到内存的时候,而且是要用到多少才真的给,如你只用到20M的内存,那其实真的分配的物理内存也就比这个多一点(这当然是虚拟内存有管理的开销)。这种模式在计算机领域很常见。如so加载,进程启动等等。
具体的内容,你要看讲虚拟内存的书籍。

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2018-03-22 09:27 |显示全部楼层
malloc是用户态的操作,内核不知道的,内核只提供了brk这种系统调用给你

malloc只分配虚拟内存,只有到你用的时候才会有物理内存给出来

论坛徽章:
3
处女座
日期:2015-03-18 14:35:45羊年新春福章
日期:2015-03-18 14:48:23午马
日期:2015-03-18 14:51:09
发表于 2018-03-22 10:45 |显示全部楼层
are you sb?

论坛徽章:
2
嗜杀者
日期:2015-11-25 10:44:3015-16赛季CBA联赛之北京
日期:2016-03-20 19:50:17
发表于 2018-03-22 19:06 |显示全部楼层
回复 3# t0mychen

好吧,看来我没说清楚。
假设已存在一个程序,跑得好好的。我加一行代码 malloc() N个G,假设malloc()成功,但以后完全不使用这块内存。这个行为引发哪些后果?我理解如果完全不使用,那么几乎没任何影响?

论坛徽章:
2
嗜杀者
日期:2015-11-25 10:44:3015-16赛季CBA联赛之北京
日期:2016-03-20 19:50:17
发表于 2018-03-22 19:08 |显示全部楼层
回复 4# jeppeter

嗯,您说的大概了解一点。要实际使用遇到缺页时操作系统才会分配真实的物理内存页,映射到进程里去。所以您的看法也是:完全不使用malloc()出的内存,和没有调用过该 malloc() 几乎是一样的效果?

论坛徽章:
2
嗜杀者
日期:2015-11-25 10:44:3015-16赛季CBA联赛之北京
日期:2016-03-20 19:50:17
发表于 2018-03-22 19:11 |显示全部楼层
回复 6# mr_sev

你tm是傻逼啊。

以前遇到你们这群动不动就喷的人,我都忽略的。现在想通了,为啥不骂一顿呢?

论坛徽章:
2
嗜杀者
日期:2015-11-25 10:44:3015-16赛季CBA联赛之北京
日期:2016-03-20 19:50:17
发表于 2018-03-22 19:14 |显示全部楼层
回复 6# mr_sev

你是sb,我不是
您需要登录后才可以回帖 登录 | 注册

本版积分规则

【重磅资料】多云网络实战的相关问题汇总!
云网融合的多云网络

本文介绍如何管理私有云数据中心,构建数据中心互联和混合云解决方案。对于OTT 网络架构的深入理解,基本上来源于SIGCOM 的白皮书和一些公开视频。

Overlay SDN 控制器详解

云计算为了适应业务/APP 的快速开发和部署,会把网络分为两层:Overlay 和 Underlay 网络。本文主要讲Overlay网络层面的问题。

超级核心路由器演进

2016 年,网络连接已经采用100G/200G/400G(虽然 400GE 接口技术还未成熟),互联网出口也已经增长到了 T 级别。

获得资料 >>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP