Re: [boost] Explicit instantiation of boost::shared_ptr<SomeClasss>

(resend)
Greg Clayton wrote:
Yes, shared pointers can't be created and handed off from DLL to DLL the way they are currently implemented. If DLL A has an STL container of shared pointers, and DLL B gets _dynamically_ loaded and adds an item to DLL A's container (creates a shared pointer to an object, and DLL B adds that shared pointer through an interface it to DLL A's STL container of shared pointers), DLL B can not be unloaded. If DLL B does get unloaded you will crash when your STL container goes out of scope (when it tries to delete the owned pointer).
Isn't it possible for the DLL C that contains the definition of SomeClass to export
shared_ptr<SomeClass> createSomeClass();
which DLL B can now call when it needs a SomeClass?
Since ~SomeClass lives in C, it must be available when the last shared_ptr<SomeClass> is destroyed.
participants (1)
-
Peter Dimov