質問
私たちすべての必要性を理解して頂くことを delete
時の再配置により、動的に割り当てられたポインタを防止するためのメモリ解放されます。しかし、私はどの程度のC++の任務の利用 delete
?例えば、以下のプログラム
int main()
{
int* arr = new int[5];
return 0;
}
がすべて意図や目的な漏洩が起こちらからプログラムが終了のOSまでクリーンのすべてのメモリを一度で返します)では、標準が未だ不十分な項目もありますが--にはお勧めの利用 delete[]
かるでしょうか?ない場合はいませんので、あらかじめごその他の理由も delete[]
いので、これから
解決
標準でdelete[]
を必要なものは何もありません - しかし、私は続くために非常に良い指針であると言うでしょう。
しかし、メモリがプログラムの終了によってクリーンアップされた場合でも、すべてのdelete
またはdelete[]
操作でnew
またはnew[]
を使用するには良い習慣です。
多くのカスタムオブジェクトは、単にメモリをクリーンアップ以外のロジックを行うデストラクタを持つことになります。 delete
を使用すると、これらの場合に破壊を保証します。
また、あなたのコード内の他の場所でメモリリークが発生しにくいです。
他のヒント
惑わの 理由がありま電話を削除したいC++の場合プログラムが終了する。
答えだけではdestructorsを必要とする実行される必要があり、できるだけ削除するオブジェクト終了する前に、プログラム。また、多くのメモリリーク検出ツールの文句を言いない場合は、もしやすいようにペリアルメモリ漏えい、実際に試したほうがよいでしょう、削除すべての物体から出る前に.
を参照してください。
をする際に使用する「新」とする場合ではありませんC ++ではですか
カスタムオブジェクトのためのC ++での演算子を削除特に(C ++でのメモリ割り当てを追跡する方法新しい/削除)する
構造体との配列新しい/ に削除
ここではありません。しかし、プログラムが大規模で複雑につれて、私はより速く、バグを追跡できるように、私は私の記憶を管理します。標準では、より小さな場合には良い習慣になってますが、何も良いコード長期的につながりませんと言います。
あなたは物事を削除するには忘れて完全に無料です。
メモリを無駄に好きですか?
私は標準を知らないが、この質問の周り全体プログラミングスタイルがあります:クラッシュ専用softxareする 理論的にはデータベースやOSのカーネルは、次のような開発されるべきであるが、再起動時に長くすることができ、いくつかのクリーンアップがあるため、多くの場合、それはそのようにそれらを使用するのはとても実用的ではありません。また従属システム(OSやデータベースクライアント内のプログラム)がクラッシュだけではないかもしれません。