delete 表达式(仅限 C++)

delete 操作程序通过释放与该对象相关联的内存来销毁使用 new 创建的对象。

delete 运算符具有 void 返回类型。

删除运算符语法

读取语法图跳过可视语法图::delete 对象指针

delete 的操作数必须是 new返回的指针,并且不能是指向常量的指针。 删除空指针没有任何作用。

delete[] 操作程序将释放为使用 new[]创建的阵列对象分配的存储器。 delete 操作程序将释放为使用 new创建的各个对象分配的存储器。

delete [] 运算符语法

读取语法图跳过可视语法图::delete [] array

删除具有 delete 的数组对象的结果未定义,如同删除具有 delete[]的单个对象一样。 不需要使用 delete[]指定数组维度。

未定义任何尝试访问已删除的对象或数组的结果。

如果已为类定义析构函数,那么 delete 将调用该析构函数。 无论析构函数是否存在, delete 都会通过调用类的函数 operator delete() (如果存在) 来释放所指向的存储器。

在下列情况下,将使用全局 ::operator delete() :
  • 该类没有 operator delete()
  • 对象是非类类型。
  • 将使用 ::delete 表达式删除该对象。
在下列情况下,将使用全局 ::operator delete[]() :
  • 该类没有 operator delete[]()
  • 对象是非类类型
  • 将使用 ::delete[] 表达式删除该对象。

缺省全局 operator delete() 仅释放由缺省全局 operator new()分配的存储器。 缺省全局 operator delete[]() 仅释放缺省全局 operator new[]()为阵列分配的存储器。