我正在使用boost :: interprocess :: managed_shared_memory。最初我分配说X mb内存。当进程耗尽内存时,我们会将内存增加一个固定值(例如Y mb,执行unmap-> grow() - > map)
在增长的同时,如果连续的内存不可用,则为具有X + Y mb的新块分配不同的基址。先前分配的X mb块会发生什么? boost会不会删除它,因为它已经取消映射而没有进程引用它?
答案 0 :(得分:2)
共享内存是一种特定于平台的服务。
根据定义,共享内存是虚拟的。
最重要的是未从程序堆中分配。操作系统将共享内存映射到进程空间。
以上所有
换句话说(正如你已经半暗示的那样),在取消映射内存后, boost对delete
没有任何意义,因为在第一次没有从堆中分配任何内容的地方。