
so you are saying that the leak cannot be prevented from inside the shared_ptr? What I am doing, is having a method2 execute from method1, no matter what happens to method1 (return without problem, thow an exception). void MakeShit() { ........ if (...) throw std::exception(); ..... .. shared_ptr<void> cleanup_shit(static_cast<void*>(0), bind(&Thread::CleanupShit, this)); .... .. return; } I prefer not to make CleanupShit() a no-throw method so that it can report errors using exceptions.What I am trying to make a point at, is that shared_ptr should either prevent the leak in the first place using a second level of ra2 inside it, or at least assert that I am not supposed to throw inside the custom deleter. From: nevin@eviloverlord.com Date: Sat, 13 Nov 2010 11:14:26 -0600 To: boost-users@lists.boost.org Subject: Re: [Boost-users] boost::bind memory leak 2010/11/13 bit bit <g_rambot@hotmail.com> (which doesn't allocate memory).
>>>>>>>>
That's not true. Check this out.. shared_count.hpp Please don't quote out of context. I stated that bind doesn't allocate memory. It doesn't. shared_count,hpp is part of shared_ptr, not bind. That's what causes the leak. You throwing from a deleter which you know is only called from the shared_ptr destructor is what is causing the leak. If you throw from a destructor, all bets are off. -- Nevin ":-)" Liber <mailto:nevin@eviloverlord.com> (847) 691-1404 _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users