Problem creating a circular buffer in shared memory using Boost

boost-interprocess, c++, circular-buffer

Solution

I asked the same question on the boost user forum and the solution that was suggested was to use -DBOOST_CB_DISABLE_DEBUG or -DNDEBUG flags, since `circular_buffer` relies on raw pointers for debug support.

Any other suggestions?

Problem

I am trying to create a circular buffer in shared memory using Boost `circular_buffer` and Interprocess libraries. I compiled and ran the the example given in the Interprocess documentation for creating a vector in shared memory with no problem. However, when I modify it to use the Boost circular_buffer as: ``` int main(int argc, char *argv[]) { managed_shared_memory segment(create_only, "MySharedMemory", 65536); const ShmemAllocator alloc_inst (segment.get_segment_manager()); MyCircBuffer *myCircBuf = segment.construct<MyCircBuffer>("MyCircBuffer")(alloc_inst); return 0; } ``` I get a compilation error (caused by `segment.construct()`). Any idea what I am doing wrong? Is it because `circular_buffer` is not one of the containers listed in `/boost/interprocess/containers`, i.e. it's not compatible with Interprocess? Thanks, C

Original source