delete 运算符 (C++)

释放内存块。

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

备注

cast-expression 参数必须是一个指向内存先前分配给使用 new运算符创建的对象的块。 delete 运算符具有类型 void 的结果,因此不返回值。 例如:

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

使用delete指针指向一个没有分配new的对象会产生不可预知的结果。 可以使用 delete 指向的值为0。 这意味着,当 new 返回 0 失败时,删除失败的 new 操作的结果无碍。 请参见 有关更多new和delete运算符信息

newdelete 运算符也能用于内置类型,包括数组。 如果 pointer 引用数组,请在 pointer之前放置空括号:

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

使用对象的 delete 运算符释放其内存。 在对象中删除后取消引用指针的程序,可能会有不可预知的结果或崩溃。

delete 用于释放C++类对象的内存时,对象的析构函数会在释放对象内存前调用 (如果对象具有析构函数)。

如果对 delete 运算符的操作的是一个可修改的左值,那么在对象删除后其值是未定义的。

示例

有关使用 delete的示例,请参见 new 运算符

请参见

参考

使用一元运算符的表达式

C++ 关键字

delete 的工作方式

使用 delete

new 和 delete 运算符

operator delete 函数