次の方法で共有


delete 演算子 (C++)

メモリのブロックを解放します。

[::] delete cast-expression
[::] delete [ ] cast-expression

解説

キャスト式引数は、前に new 演算子で作成されたオブジェクトに割り当てられたメモリ ブロックへのポインターである必要があります。 delete 演算子は、型 void の結果を持つため、値を返しません。 次に例を示します。

CDialog* MyDialog = new CDialog;
// use MyDialog
delete MyDialog;

new で割り当てられたのではないオブジェクトへのポインターに対して delete を使用すると、予期しない結果になります。 ただし、値 0 のポインターに対して delete を使用することはできます。 このプロビジョニングは、new が失敗時に 0 を返す場合、失敗した new 操作の結果を削除しても無害であることを意味します。 詳細については、「new および delete 演算子」を参照してください。

newdelete 演算子は、配列も含めて、組み込み型にも使用できます。 pointer が配列を参照している場合は、pointer の前に空のかっこを記述します。

int* set = new int[100];
//use set[]
delete [] set;

オブジェクトに対して delete 演算子を使用すると、そのメモリが解放されます。 オブジェクトを削除した後でポインターを逆参照するプログラムは、予期しない結果になるか、クラッシュする可能性があります。

C++ クラス オブジェクトのメモリを解放するために delete を使用すると、オブジェクトのメモリを解放する前に、オブジェクトのデストラクターが呼び出されます (オブジェクトにデストラクターが存在する場合)。

delete 演算子のオペランドが変更可能な左辺値である場合、オブジェクトを削除した後のその値は未定義になります。

使用例

delete の使い方の例については、「new 演算子」を参照してください。

参照

関連項目

単項演算子を含む式

C++ キーワード

delete の機能

delete の使用

new および delete 演算子

operator delete 関数