首先,我将用源概述领域。
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);
但是您必须确保没有人使用该文件,这就是为什么他们称其为离线增长。根据问题的不同,这可能是不可能的。