
On Mon, May 2, 2011 at 3:01 PM, Frank Mori Hess
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Monday, May 02, 2011, Peter Dimov wrote:
// thread B // p2 goes out of scope: undefined, the destructor is considered a
"write access"
This example just says that you can't make a copy of a destroyed shared_ptr, or one that is in the process of being destroyed. In principle, it has nothing to do with reference counts. Doing something with a destroyed object of any type is undefined behavior in C++.
It looks like the example isn't quite right though, as p2 was declared in thread A so it can't go out of scope in thread B.
It still can happen if p2 is a weak_ptr in thread "A" and the corresponding shared_ptr goes out of scope in thread "B". Best Regards, Ovanes