Boost logo

Boost :

From: Ion Gaztañaga (igaztanaga_at_[hidden])
Date: 2008-03-27 12:36:23

Aleksey Midenkov wrote:
> The failure is in sp_counted_impl.hpp:66:
> 64 template<class Ptr>
> 65 sp_counted_impl_pd(const Ptr & p, const A &a, const D &d )
> 66 : this_allocator(a), D(d), m_ptr(p.get())
> 67 {}
> p is of type offset_ptr<T> and m_ptr is of type T *
> Test case source, compiler output and quick fix patch (which is not fully
> correct, I suspect) are attached.

If you want to place the a shared_ptr in shared memory you must define a
deleter whose pointer type is offset_ptr because otherwise, that
shared_ptr can't be shared between processes if they map the memory in
different address. You should define the deleter storing a shared_ptr.

Anyway, I think you are using quite an old Interprocess version, because
shared_segment_deleter does not exist currently.

Download a up-to-date version from Boost SVN or the Boost 1.35 release
candidate 2. Here's a link to the documentation about shared_ptr:



Boost list run by bdawes at, gregod at, cpdaniel at, john at