首先,我将概述带有来源的域名。
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);
我不关心底层文件的最终大小,但我无法预见这个值。是否有任何增强机制,它将处理调整基础文件的大小?或者我必须抓住bip :: bad_alloc并自己关心这个?
答案 0 :(得分:6)
阅读这些文档的this section。
你有静态成员函数grow()
可能是你需要的:
bip::managed_mapped_file::grow("./file", extra_bytes);
但是你必须确定没有人使用该文件,这就是为什么他们称之为离线增长。根据问题,这可能是不可能的。