gpt4 book ai didi

c++ - boost::interprocess::managed_shared_memory: Grow(): 内存重用?

转载 作者:行者123 更新时间:2023-11-30 04:06:59 26 4
gpt4 key购买 nike

我正在使用 boost::interprocess::managed_shared_memory。最初我分配说 X mb 内存。当进程耗尽内存时,我们将内存增加一个固定值(比如 Y mb,执行 unmap-> grow()-> map)

在增长过程中,如果连续内存不可用,则会为一个 X+Y mb 的新 block 分配一个不同的基地址。先前分配的 X mb block 会发生什么? boost 是否负责删除它,因为它已经取消映射并且没有进程引用它?

最佳答案

共享内存是一种特定于平台的服务。

根据定义,共享内存是虚拟的。

大部分不是从程序堆中分配的。共享内存由操作系统映射到进程空间

所有这些

  • 内存是否被重用是平台定义的(这里的重用仅仅意味着当时内存中的页面是否保留;如果地址改变了,这实际上没有任何意义,因为它只是相同的页面得到重新映射到进程空间中的不同虚拟地址)。

换句话说(正如您已经半暗示过的那样),在取消映射内存之后,boost 没有任何东西可以删除,因为从来没有从堆中分配任何东西首先。

关于c++ - boost::interprocess::managed_shared_memory: Grow(): 内存重用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22684861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com