タグ

スマートポインタに関するrbyのブックマーク (2)

  • C++11スマートポインタで避けるべき過ち Top10 | POSTD

    (注:2017/10/25、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) 私は新しいC++11のスマートポインタをとても気に入っています。自分でメモリを管理するのが嫌だと感じる多くの仲間たちにとって、これはいろいろな面で天の助けでした。私の場合、このおかげで新人にC++を教えるのがずっと楽になりました。 しかし、C++11のスマートポインタを幅広く使っていた2年ちょっとの間で、使い方を誤ると、プログラムの効率が落ちたりクラッシュして壊れたりするという事態に何度も遭遇しました。参照用に、以下に例を載せました。 まずはこれらの”過ち”を、簡単なAircraftクラスを例に取って見てみましょう。 class Aircraft { private: string m_model; public: int m_flyCount; weak_p

    C++11スマートポインタで避けるべき過ち Top10 | POSTD
  • Smart Pointer Timings

    2000年1月の後半に、Mark Borgerding は boost にスマートポインタの新しい設計を提案した。 それは、 与えられた生ポインタを共有する全てのスマートポインタのインスタンスを、 双方向リンクリスト で結合することによって所有権を共有するというものである。 現在のバージョンの boost::shared_ptr では、 最初の構築の際に参照カウントをヒープに割り当てるコストが発生するが、 Mark Borgerding が提案したスマートポインタでは、そのコストを回避することが可能となる。 もちろん、何の代償もなしにこのメリットを得られるということはなく、 この新しいスマートポインタは、コピーの際にサイズが増加し、より大きなコストが生じる。 boost のメーリングリストでの議論と、このページで述べる幾つかのテストが、 現在及び将来のスマートポインタの実装戦略に関するガイ

  • 1