問題タブ [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.

0 投票する
6 に答える
48192 参照

c++ - 標準コンテナで std::auto_ptr<> を使用するのが間違っているのはなぜですか?

std::auto_ptr<>標準コンテナでの使用が間違っているのはなぜですか?

0 投票する
3 に答える
6778 参照

c++-cli - マネージ C++/CLI クラスの auto_ptr または shared_ptr に相当するもの

C++/CLI では、マネージド クラスでネイティブ クラスのメンバーを保持することは許可されていないため、マネージド クラスでネイティブ型を使用できます。その場合はポインターを使用する必要があります。

例を次に示します。

C++/CLI の世界で shared_ptr に相当するものを知っている人はいますか?

編集:「1800-Information」という提案をありがとう。あなたの提案に従って、STL.Net について確認しましたが、Visual Studio 2008 でのみ利用可能で、コンテナー + アルゴリズムを提供しますが、スマート ポインターは提供しません。

0 投票する
8 に答える
9124 参照

c++ - new char[n] で auto_ptr を使用するのは間違っていますか

を使用して一時的な自動削除文字バッファを宣言した場合

バッファが範囲外になると、バッファは自動的に削除されます。delete を使用してバッファを削除すると仮定します。

ただし、バッファーは new[] を使用して作成されているため、厳密に言えば、バッファーは delete[] を使用して削除する必要があります。

この不一致が原因でメモリ リークが発生する可能性はありますか?

0 投票する
3 に答える
2768 参照

c++ - Objective C から C++ を使用する: 割り当て/割り当て解除の方法は?

現在、Objective C クラスは、所有者が作成されたときに a を実行し、所有者が破棄されたときにnew呼び出すことによって、C++ オブジェクトを使用しています。deleteしかし、別の方法はありますか?auto_ptrたとえば、スコープが Objective C クラスの存続期間中続くを宣言できるようにしたいと考えています。

0 投票する
9 に答える
9871 参照

c++ - pImpl イディオムの std::auto_ptr または boost::shared_ptr ?

pImpl イディオムを使用する場合、a のboost:shared_ptr代わりに aを使用することをお勧めしstd::auto_ptrます。ブーストバージョンはより例外に優しいと読んだことがありますか?

[編集] std::auto_ptr<> を使用することは常に安全ですか、それとも別のブースト スマート ポインターが必要な状況がありますか?

0 投票する
3 に答える
580 参照

c++ - auto_ptr はこれを防ぎますか?

この場合に auto_ptr が役立つかどうかはよくわかりません。

囲んでいるスコープを離れると、myA._member参照は有効になりますか? smartここで auto_ptr が答えではない場合、それは何ですか?

編集:私が皆を混乱させたところがわかります。スコープ外で myA を返さなければならないため、 smart がスコープを終了した後に _member が有効であることを気にします。

0 投票する
2 に答える
280 参照

c++ - 「auto_ptr」の再割り当てとメモリの管理

私はこのような状況を持っています:

これを達成する方法はありますか?次のコードは私が望むことをしますか?

のメモリはnew_other_classのデフォルト デストラクタで割り当て解除されますMyClassか?

0 投票する
3 に答える
1887 参照

shared-ptr - ATL CAutoPtr と STL std::auto_ptr の違いは?

MFC でコードを書いていて、自動ポインターを使用したいと考えています。同じことをしているように見える 2 つの異なるクラスに出くわしました:CAutoPtrおよびstd::auto_ptr2 つの異なる実装について人々の考えは?

さらに、私はあることを知っていますstd::tr1::shared_ptrshared_ptrATL/MFC に似たものはありますか?

0 投票する
2 に答える
513 参照

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 でこれを機能させるにはどうすればよいですか?

0 投票する
4 に答える
3354 参照

c++ - = 構文を使用して auto_ptr 構築が機能しないのはなぜですか

私にはあまり意味のないコンパイラ エラーが発生しました。

エラー: 'Table*' から非スカラー型 'std::auto_ptr< Table>' への変換が要求されました

ただし、次の行は機能します。

コンストラクターのこの定義について、期待どおりに動作しないのは何ですか? 初期化された宣言はコンストラクターを使用していると思いました。

これが私auto_ptrのコンストラクタです(SGI STLから):