首先,我将用源概述领域。

namespace bip=boost::interprocess;

typedef bip::allocator<int, bip::managed_mapped_file::segment_manager> allocator;
typedef bip::vector<int, allocator> vector;

bip::managed_mapped_file m_file(open_or_create, "./file", constant_value);
bip::allocator alloc(m_file.get_segment_manager());
bip::vector *vec = m_file.find_or_construct<vector>("vector")(alloc);

我不在乎基础文件的最终大小,但是我无法预见此值。是否有任何增强机制可以处理基础文件的大小调整?还是我必须 catch bip::bad_alloc并自己关心这个问题?

最佳答案

阅读文档的this section

您可能需要使用静态成员函数grow():

bip::managed_mapped_file::grow("./file", extra_bytes);

但是您必须确保没有人使用该文件,这就是为什么他们称其为离线增长。根据问题的不同,这可能是不可能的。

10-05 20:08