|
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ] ヘッダ検索 ■ SharedPointer(シェアードポインタ)DESC SmartPtr のコピーの問題点を改良したポインタクラスのこと。 参照カウンタをもち, どの変数からも参照されない時点で解放する。 ThreadSafe な設計である. ( CntRef の操作時に排他制御がされる. ) -> ( SharedPointer を Thread( Worker ) で共有しなければ OK ) POINT 生のポインタをかえすかわりに, SharedPointer を返せば OK // ヒープにTestオブジェクトを生成 // この時点で参照カウントはこの時点で1である boost::shared_ptr< Test> p(new Test()); // p.cntRef = 1; { boost:shared_ptr< Test> pp; // スマートポインタをコピーする(参照カウントが+1される) pp = p; // pp.refCnt = 2; p.refCnt = 1; // 相手先は cntRef を copy してさらに ++ ! std::cout < < "pp will destruct" < < std::endl; // このスコープを抜けたときにppはなくなり ppが指しているTestオブジェクト // への参照カウントは-1されるが 、まだ0ではないためTestオブジェクトは開放されない。 } // pが指しているTestオブジェクトはまだ開放されていない |
|