void HogeFunc(boost::weak_ptr
}
boost::shared_ptr
myFunc = boost::bind(&HogeFunc, ptr);
weak_ptrでバインドしてるから使わなくなったらptrは開放されるはず♪とおもって上記のようにやっちゃだめ!これでもコンパイルは普通に通ってしまうのが落とし穴なのですが,
boost::shared_ptr
boost::weak_ptr
myFunc = boost::bind(&HogeFunc, wptr);
と明示的にweak_ptrでbindしなければptrはbindされてる限り残ります.なぜ?shared_ptrとしてbindされていてファンクタが呼ばれるときにweak_ptrを生成していると思われます.(しらべろよ!
0 件のコメント:
コメントを投稿