問題タブ [delete-operator]
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++ - C++ での削除演算子のオーバーロード
私のコードでは、ファイル名と行番号を取得するためにnew
and演算子をオーバーロードしました。delete
私のコードでは、 と を使用map
していstack
ます。マップから特定の値を消去すると、オーバーロードされdelete
た関数が呼び出されますが、他の関数ではなく、明示的なdelete
ステートメントのみが関数にアクセスできるようにします。どうやってやるの?
c++ - 静的ローカル変数として保存されている配列を削除する必要がありますか?また、その方法は?
いくつかの配列と削除が必要なリソースがあります。これらの変数の値はプログラムの存続期間を通じて保持され、単一の関数でのみ使用されるため、静的変数に自然に適合します。
ただし、静的を使用した場合、関数の外部からこれらの変数にアクセスできないため、これらのリソースを削除するのに問題が発生します。これらのグローバルを作成することはできますが、可能であればそれを避けたいと思います。
したがって、問題は次のとおりです。
- arrs []はスタックまたはヒープに割り当てられていますか?それで、私はそれを削除する必要がありますか?
- GLUquadricの場合、明らかにコンパイラーはそれを適切に削除する方法を知りません。今のところ、美しく機能するRAIIラッパークラスを使用しましたが、さらに簡単なアプローチがあるかどうかを探しています。
valgrindはGLUquadricをリリースしないと不平を言いました、そして私がそれらをリリースするときにプログラムがとにかく終了するはずであり、これらのリソースがプログラムの終了時におそらく(?)リリースされるとしても、valgrindをサイレンシングするのではなくクリーンアップするだけだと思います。
c++ - C++ に delete[] があるのはなぜですか?
なぜあるのdelete[]
ですか?私の理解では、配列の動作が異なります。しかし、なぜそれは本当に存在するのですか?C には free しかなく、free_array はありません。delete var
また、構文では、との唯一の違いdelete []var
は、[]
パラメーターがないことです (配列の長さはわかりません)。
では、なぜdelete[]
実際に存在するのでしょうか。delete
オーバーロードできると誰かが言うことは知っていますがdelete[]
(少なくとも私はそれが可能だと思います)、オーバーロードしていないとしましょう。なぜそれが存在するのですか?
c++ - ポインター ベクトルを解放するにはどうすればよいですか?
ポインタ ベクトルのメモリを解放するにはどうすればよいですか? コードは次のとおりです。
.erase()
メモリが解放されず、デストラクタも呼び出されないことがわかりました。すべてのリスト エントリで繰り返し使用しようとしdelete
ましたが、1 回の繰り返しでクラッシュします。エラーを回避するために、リスト エントリが既に NULL であるかどうかを既にチェックしています。何か不足していますか?また、私は STL のみを使用する必要があり、Boost は必要ありません。
c++ - 「new」を使用せずにC++でオブジェクトを作成する
たとえば、行列を表すプログラムを作成したいのですが、行列はベクトルで表され、ベクトル内の各オブジェクトはセルの例を表します。ベクトルこれで、行列を作成するときに、コンストラクターが挿入するセルのリストを受け取ります。マトリックス。リストのサイズはコンパイル時に不明です
ヒープ上のメモリを使用せずにこのマトリックスを作成することに興味があります。言い換えれば、「新規」または「削除」という単語を使用してオブジェクトを作成しない場合、ベクトルに挿入されるオブジェクトの数がわからない場合、それを行う方法はありますか?
c++ - ベクター内のポインターを消去する前または後に削除する必要がありますか?
の前または後に削除する必要がありerase
ます。私の理解では、どちらも問題ありません。それが正しいか?
さらに、消去中に要素を削除したくない場合はありますか? あるに違いないと私は信じています。さもなければ、erase
喜んで責任を取ります。
c++ - 「オーバーライド」と「オーバーロード」の新規作成/削除
私はいつも思っていた...
- オーバーライドとは、基本クラスで関数 (同じシグネチャ) を再実装することを意味しますが、
- オーバーロードとは、同じ名前で署名が異なる関数を実装することを意味します
...そして、違いを気にしない人もいるため、混乱しました。
新規/削除に関して: それらは過負荷または上書きされていますか?
アイデア:
- Class = overload に new/delete 演算子を実装する
- グローバルな new/delete = override の再実装
修正/提案/異議はありますか? 質問にタグを付けてください。
c++ - テンプレート リストからのオブジェクトの削除
私は言うテンプレートリストを持っています、
サブクラスの mList オブジェクトに追加されます。
リストからオブジェクトを削除する際に、オブジェクトを対応するサブクラスに変換し、delete メソッドを呼び出す必要がありますか?
c++ - テンプレートを削除するには?
テンプレートの削除に問題があります。
私のテンプレートとデストラクタ:
私のヒープとデストラクタ:
これはテンプレートを保持するオブジェクトです。これにも問題があります。
ここで何が問題なのですか?
c++ - スタックからのオブジェクトの削除
スタックからオブジェクトを手動で削除するのは悪い/違法な C++ ですか、それとも許容できる状況がありますか?
編集
オブジェクトがヒープ上にあるかスタック上にあるかを確認する方法はありますか?