5

首先,我将概述带有源的域。

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 并关心这个?

4

1 回答 1

6

阅读文档的这一部分

grow()您有可能是您需要的静态成员函数:

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

但是您必须确保没有人在使用该文件,这就是他们称之为离线生长的原因。根据问题,这可能是不可能的。

于 2013-12-11T22:40:54.993 回答