首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mmap选项( malloc )

mmap选项( malloc )
EN

Stack Overflow用户
提问于 2014-05-30 23:04:54
回答 1查看 309关注 0票数 2

MAP_ANONYMOUS|MAP_SHARED选项在mmap中的作用是什么?我看到malloc使用MAP_ANONYMOUS|MAP_PRIVATE选项来执行mmap来进行更大的内存分配。

我观察到,对于MAP_ANONYMOUS|MAP_PRIVATE,未映射的内存区域仍然与进程(通过pmap观察到),而对于MAP_ANONYMOUS|MAP_SHARED,未映射的内存区域被立即释放。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-30 23:31:42

当使用MAP_ANONYMOUS时,MAP_PRIVATEMAP_SHARED只有在进程分叉一个也使用映射内存块的子进程时才会起作用。

如果使用MAP_PRIVATE,映射的内存将被标记为在写上复制,因此另一个进程不会看到其中一个进程所做的更改。

如果使用MAP_SHARED,映射的内存由两个进程共享,因此它们可以看到对方的更改。

malloc()使用MAP_PRIVATE,这样父和子节点就可以继续使用映射的内存来处理它们的堆,而无需同步更新。它的行为就像用于普通堆的数据段一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23964594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档