Share via


削除操作 (C++)

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

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

解説

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

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

新規作成 に割り当てられていないオブジェクトへのポインターの 削除 を使用して予測できない結果が得られます。ただし値 0 を持つポインターの 削除 を使用できます。このプロビジョニングは 新規作成 が失敗した 0 が返されるときに意味し失敗の 新規作成 操作の結果が無害削除します。詳細については新しいおよび削除の操作 を参照してください。

新規作成削除 の演算子は配列を含む組み込みの型として使用できます。pointer は配列を繰り返しpointer の前に空のかっこを記述します :

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

削除 を使用してオブジェクトの演算子はメモリを解放します。オブジェクトを削除した後のポインターを逆参照するプログラムは予測できない結果になるかまたはクラッシュが発生する場合があります。

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

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

使用例

削除 の使用例についてはnew 演算子 を参照してください。

参照

関連項目

単項演算子との式

C++ のキーワード

削除のしくみ

を使用して削除

新規および削除操作

operator delete 関数