Boost interprocess allocator - manage file size

boost-interprocess, c++

Solution

Read this this section of the docs.

You have the static member function `grow()` that may be what you need:

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

But you have to be sure that nobody is using the file, that's why they call it off-line growing. And that may not be possible depending on the problem.

Problem

At first I will outline the domain with source. ``` 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); ``` I don't care about final size of an underlying file, but I cannot foresight this value. Is there any boost mechanism, which will handle resizing an underlying file? Or I have to catch bip::bad_alloc and care about this by my own?

Original source