Najpierw opiszę domenę źródłową.Zwiększ alokację międzyprocesową - zarządzaj rozmiarem pliku
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);
Nie dbam o ostateczny rozmiar pliku bazowego, ale nie mogę przewidzieć tej wartości. Czy istnieje mechanizm doładowania, który będzie obsługiwał zmienianie rozmiaru pliku bazowego? Czy muszę złapać bip :: bad_alloc i dbać o to przez siebie?
Oh. Tak prosty. Muszę przyznać, że bountring po rozwiązywaniu podobnych wyzwań bezpośrednio na POSIX mmap i przy użyciu Boost IOstreams. Zobacz np. Tę odpowiedź [jak zamienić jedną linię na drugą w C++] (http://stackoverflow.com/a/17374711/85371). Zastanawiam się, jak zaimplementowali go, aby był przenośny. – sehe