delete 表达式(仅限 C++)
delete 操作程序通过释放与该对象相关联的内存来销毁使用 new 创建的对象。
delete 运算符具有 void 返回类型。
delete 的操作数必须是 new返回的指针,并且不能是指向常量的指针。 删除空指针没有任何作用。
delete[] 操作程序将释放为使用 new[]创建的阵列对象分配的存储器。 delete 操作程序将释放为使用 new创建的各个对象分配的存储器。
删除具有 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[]()为阵列分配的存储器。
