1

私はゲームに取り組んできましたが、スマートポインターを使用したいのですが、参照カウントが0になるとメモリを自動的に削除する共有ポインターのようにしたいと思います。また、次のことができるようになります。必要なときに強制的に解放します。すべてのshared_ptrは、オブジェクトが解放されたことを認識している必要があります。

これはそれをしますか?

class Data
    {
    //stuff
    };

shared_ptr< unique_ptr< Data > > mBestOfBothWorlds( new unique_ptr<Data>( new Data() ) );

これのパフォーマンスへの影響は何ですか?それは法外に遅いでしょうか?正しく動作しますか?

自動メモリ管理だけでなく手動管理も利用できるようで、データを他のデータと交換する機能があり、shared_ptrを持っているすべての人が面倒なことなく新しいデータを取得できるようです。

4

1 に答える 1

4

unique_ptrかなり薄いラッパーなので、なぜそれが法外に遅いと決めたのかわかりません。あなたのアプローチに技術的な問題は見られませんが、あなたはスマートポインタの目的そのものに違反していると思います。スマートポインタはすべて所有権に関するものであり、所有権を管理する必要があるのはそれらだけです。私の意見では、そのようなアプローチでは、いつか厄介なバグが発生するでしょう。

于 2013-03-04T05:59:33.367 に答える