タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

boostに関するetopirika5のブックマーク (2)

  • boost::shared_ptr と NULL — Soft x-ray beamline at SPring-8.

    boost::shared_ptr ライブラリは非常に便利で、プログラムスタイルをまったく変えてしまいます。礼を挙げながら便利な使い方を説明しましょう。 オブジェクト指向の便利な点のひとつには、「仮想関数」を呼び出す点になります。しかし、生のポインタを扱うと、メモリリークがおきやすくなります。 たとえば、 animal *p1, *p2; p1=new dog("dog"); p1=new cat("cat");//ここで、メモリリーク! p2=p1; p1->bark(); p2->bark(); delete p1; delete p2; となってしまいます。そこで、 boost::shared_ptr<animal> p1, p2; p1=boost::shared_ptr<animal>(new dog("dog")); p1=boost::shared_ptr<anim

  • 動的削除子 (dynamic deleter) - 意外と知られていない? boost::shared_ptr の側面 - Cry’s Diary

    boost::shared_ptr は動的削除子 (dynamic deleter) と呼ばれる技法に基づいて実装されています.この動的削除子という技法で重要なのは, boost::shared_ptr が最終的に呼び出す解放処理が boost::shared_ptr のテンプレート引数の型に関係なく,コンストラクタに実際に渡されたポインタの型で,かつ boost::shared_ptr のコンストラクタの呼び出しの段階で 決定する,ということです. 以下のようなコードが,動的削除子の効果が一番分かりやすい例になるでしょう. class X{ public: ~X() { std::cout << "X::~X" << std::endl; } }; class B{ public: ~B() // virtual でないことに注意!! { std::cout << "B::~B" <<

    動的削除子 (dynamic deleter) - 意外と知られていない? boost::shared_ptr の側面 - Cry’s Diary
  • 1