f
次のような関数があるとします。
class MyClass {
};
boost::shared_ptr<MyClass> f(/*other input parameters*/) {
static boost::shared_ptr<MyClass> p;
if (!p.get() || /*Test if somebody else has a copy of my pointer*/) {
p.reset(new MyClass() );
}
/*Do other stuff*/
return p;
}
呼び出し元がポインターのコピーを保持しているかどうかを確認できますか? 私がポインタを放し、彼もポインタを放した場合、メモリは解放されますか?