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 演算子」を参照してください。
new と delete 演算子は、配列も含めて、組み込み型にも使用できます。 pointer が配列を参照している場合は、pointer の前に空のかっこを記述します。
int* set = new int[100];
//use set[]
delete [] set;
オブジェクトに対して delete 演算子を使用すると、そのメモリが解放されます。 オブジェクトを削除した後でポインターを逆参照するプログラムは、予期しない結果になるか、クラッシュする可能性があります。
C++ クラス オブジェクトのメモリを解放するために delete を使用すると、オブジェクトのメモリを解放する前に、オブジェクトのデストラクターが呼び出されます (オブジェクトにデストラクターが存在する場合)。
delete 演算子のオペランドが変更可能な左辺値である場合、オブジェクトを削除した後のその値は未定義になります。
使用例
delete の使い方の例については、「new 演算子」を参照してください。