 <p>The problem is that you are using a normal pointer to store your EqVector. When you map a shared memory segment, it maybe mapped into any location in the process's address space. This means that where eqVector is stored in memory is different in the first process' memory space than in the second process'. You need to use a boost::offset_ptr, which stores addresses as offsets from the beginning of shared memory segments, see here: <a href="http://www.boost.org/doc/libs/1_35_0/doc/html/interprocess/offset_ptr.html">http://www.boost.org/doc/libs/1_35_0/doc/html/interprocess/offset_ptr.html</a></p>