- 1 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 01:00:22.34 ]
- The C++ Standards Committee
www.open-std.org/JTC1/SC22/WG21/ Wikipedia https://en.wikipedia.org/wiki/C%2B%2B14 C++11/C++1y 18 toro.2ch.net/test/read.cgi/tech/1365073520/
- 231 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 18:38:48.13 ]
- newして返したboost::shared_ptrと、
boost::shared_ptrで確保した、boost::shared_ptrを返した時。 特に片方が共同所有権としてつかわれ、 片方がEventの委譲用とかよくありがちじゃん。
- 232 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 18:42:03.66 ]
- それで何か問題になるのか
- 233 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 19:47:52.61 ]
- >>232
二重delete
- 234 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 21:00:11.72 ]
- 長文失礼
shared_ptrのオブジェクトの管理領域は次のようになっている 管理領域の参照カウンタ、オブジェクトの参照カウンタ、オブジェクトへのポインタ、デリータへのポインタ ここで、shared_ptrは管理領域、オブジェクト両方のカウンタを増減させる。 weak_ptrは管理領域のカウンタのみを変更する。 shared_ptrの破棄によってオブジェクトのカウンタが0になったとき、オブジェクトは解放される。 しかし、管理領域は全てのweak_ptrが破棄されるまで生存する そして、weak_ptrからshared_ptrを構築する際には、shared_ptrの管理領域へのポインタをweak_ptrが指す管理領域へのポインタへと設定している
- 235 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 21:02:36.06 ]
- 長すぎと言われた、連レスすまん
enable_shared_from_thisは内部にweak_ptrを持っていて、shared_ptrのコンストラクタはenable_shared_from_thisを継承したクラスに対しては特殊な動作、すなわち内部のweak_ptrに管理領域へのポインタを設定する動作をする shared_from_this関数は内部のweak_ptrからshared_ptrを構築する関数で、前述のように同じ管理領域を指すポインタが新たに構築される 全てのスマートポインタが同じ管理領域を指しているので、二重解放は起こらない
- 236 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 01:04:05.46 ]
- >>231
> newして返したboost::shared_ptr わからん。何を new ?返すってどこからどこに? > boost::shared_ptrで確保 わからん。 shared_ptr に何かを「確保」する機能なんて無いよね? さっぱりわからん。
- 237 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 10:41:28.04 ]
- >>231 >>233
こいつはたぶんshared_ptrそのものを理解してない
- 238 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 19:18:57.03 ]
- 普通に使えば普通に使えるライブラリを
浅知恵で細工して可読性もパフォーマンスもセキュリティもぶち壊す C++ではよくあること
- 239 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 22:25:36.50 ]
- そういや shared_ptr を使っているインスタンスに対してVisitorパターンだったかやってみようとしたら
途中で生ポインタに変わっちゃうんであきらめたことがあった class Hage : public Element { virtual void accept(Visitor &v){ v.visit(this); } // <- このとき }; enable_shared_from_this ってのを知っていたらうまいことできたんだろうか
- 240 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 01:14:30.49 ]
- うん
|

|