ホームページ >バックエンド開発 >C++ >C では `delete` と `delete[]` をいつ使用する必要がありますか?

C では `delete` と `delete[]` をいつ使用する必要がありますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-30 12:52:09732ブラウズ

When Should I Use `delete` vs. `delete[]` in C  ?

C の 'delete' と 'delete[]' の違いを理解する

C では、 'delete' 演算子と 'delete[]' 演算子は異なる目的を果たします。それぞれ「new」と「new[]」を使用して動的に作成されたオブジェクトのメモリ管理に関して言えば、これらの演算子の違いを詳しく見てみましょう。

'delete' 演算子

'delete' 演算子は、'new' でインスタンス化された単一オブジェクトのメモリの割り当てを解除するために使用されます。さらに、そのオブジェクトのデストラクター関数を呼び出し、適切なリソースのクリーンアップと破棄を保証します。

MyClass* myObject = new MyClass();
// ...
delete myObject; // Deallocate memory and call the destructor

'delete[]' Operator

'delete' とは対照的に、'delete[ ]' 演算子は、'new[]' で作成されたオブジェクトの配列に割り当てられたメモリの割り当てを解除するために予約されています。メモリの割り当てを解除するだけでなく、配列内の各要素のデストラクターも呼び出します。

MyClass* myArray = new MyClass[size];
// ...
delete[] myArray; // Deallocate memory and call destructors for each element

重要な違い: ターゲット オブジェクト タイプ

「delete」と「delete[]」の基本的な違い」は、ターゲットとするオブジェクトの種類にあります。 「delete」は単一オブジェクト用に設計されていますが、「delete[]」は特にオブジェクトの配列を扱います。

これらの演算子を誤って使用すると、未定義の動作が発生する可能性があります。たとえば、「new[]」から取得した配列ポインタに対して「delete」を使用したり、「new」によって生成されたポインタに対して「delete[]」を使用しようとすることは、強く推奨されません。

以上がC では `delete` と `delete[]` をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。