問題タブ [auto-ptr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 標準コンテナで std::auto_ptr<> を使用するのが間違っているのはなぜですか?
std::auto_ptr<>
標準コンテナでの使用が間違っているのはなぜですか?
c++-cli - マネージ C++/CLI クラスの auto_ptr または shared_ptr に相当するもの
C++/CLI では、マネージド クラスでネイティブ クラスのメンバーを保持することは許可されていないため、マネージド クラスでネイティブ型を使用できます。その場合はポインターを使用する必要があります。
例を次に示します。
C++/CLI の世界で shared_ptr に相当するものを知っている人はいますか?
編集:「1800-Information」という提案をありがとう。あなたの提案に従って、STL.Net について確認しましたが、Visual Studio 2008 でのみ利用可能で、コンテナー + アルゴリズムを提供しますが、スマート ポインターは提供しません。
c++ - new char[n] で auto_ptr を使用するのは間違っていますか
を使用して一時的な自動削除文字バッファを宣言した場合
バッファが範囲外になると、バッファは自動的に削除されます。delete を使用してバッファを削除すると仮定します。
ただし、バッファーは new[] を使用して作成されているため、厳密に言えば、バッファーは delete[] を使用して削除する必要があります。
この不一致が原因でメモリ リークが発生する可能性はありますか?
c++ - Objective C から C++ を使用する: 割り当て/割り当て解除の方法は?
現在、Objective C クラスは、所有者が作成されたときに a を実行し、所有者が破棄されたときにnew
呼び出すことによって、C++ オブジェクトを使用しています。delete
しかし、別の方法はありますか?auto_ptr
たとえば、スコープが Objective C クラスの存続期間中続くを宣言できるようにしたいと考えています。
c++ - pImpl イディオムの std::auto_ptr または boost::shared_ptr ?
pImpl イディオムを使用する場合、a のboost:shared_ptr
代わりに aを使用することをお勧めしstd::auto_ptr
ます。ブーストバージョンはより例外に優しいと読んだことがありますか?
[編集] std::auto_ptr<> を使用することは常に安全ですか、それとも別のブースト スマート ポインターが必要な状況がありますか?
c++ - auto_ptr はこれを防ぎますか?
この場合に auto_ptr が役立つかどうかはよくわかりません。
囲んでいるスコープを離れると、myA._member
参照は有効になりますか? smart
ここで auto_ptr が答えではない場合、それは何ですか?
編集:私が皆を混乱させたところがわかります。スコープ外で myA を返さなければならないため、 smart がスコープを終了した後に _member が有効であることを気にします。
c++ - 「auto_ptr」の再割り当てとメモリの管理
私はこのような状況を持っています:
これを達成する方法はありますか?次のコードは私が望むことをしますか?
のメモリはnew_other_class
のデフォルト デストラクタで割り当て解除されますMyClass
か?
shared-ptr - ATL CAutoPtr と STL std::auto_ptr の違いは?
MFC でコードを書いていて、自動ポインターを使用したいと考えています。同じことをしているように見える 2 つの異なるクラスに出くわしました:CAutoPtr
およびstd::auto_ptr
2 つの異なる実装について人々の考えは?
さらに、私はあることを知っていますstd::tr1::shared_ptr
。shared_ptr
ATL/MFC に似たものはありますか?
visual-studio-2008 - VC2008 の自動ポインター コンストラクター
自動ポインターの実装があります。
Visual C++ 6 では問題なく動作します。ただし、Visual C++ 2005 または 2008 では、関数から自動ポインタを返すことはできません。
例えば
何が起こるかというと、コンパイラは一時的な GAutoString を作成して関数の戻り値を保持し、それをスタック上の変数 'a' に渡す際に一時変数の演算子 T*() を呼び出し、次に GAutoPtr( T *ptr = 0) コンストラクター、コピー コンストラクターを使用する代わりに: GAutoPtr(AutoPtrRef p)
これにより、temp auto ptr がメモリを削除し、'a' が解放されたメモリへのポインタを保持します。
ただし、VC6 では、適切なコンストラクターを呼び出します。これをすべて言っていると、私は Linux と Mac でも gcc を使用しているので、私が書いたコードはそこでも動作する必要があります。VC2008 では、コピー コンストラクターで非 const by value 変数を使用できません。また、とにかく「const」は必要ありません。コピー コンストラクターがメモリ ブロックの所有権を取得し、コピー中のオブジェクトから所有権を削除するため、オブジェクトを変更するためです。
VC 2005/2008 でこれを機能させるにはどうすればよいですか?
c++ - = 構文を使用して auto_ptr 構築が機能しないのはなぜですか
私にはあまり意味のないコンパイラ エラーが発生しました。
エラー: 'Table*' から非スカラー型 'std::auto_ptr< Table>' への変換が要求されました
ただし、次の行は機能します。
コンストラクターのこの定義について、期待どおりに動作しないのは何ですか? 初期化された宣言はコンストラクターを使用していると思いました。
これが私auto_ptr
のコンストラクタです(SGI STLから):