use*_*147 6 c++ pointers delete-operator
是否定义了此代码的行为?
int* ptr = new int[10];
operator delete[] (ptr, 0);
Run Code Online (Sandbox Code Playgroud)
这段代码可以正常编译,并且(在我的机器上)似乎什么也没有发生。它的行为在某处定义吗?
在这份声明中
operator delete[] (ptr, 0);
Run Code Online (Sandbox Code Playgroud)
显式调用了释放函数
void operator delete[](void*, std::size_t) noexcept;
Run Code Online (Sandbox Code Playgroud)
调用中具有该类型的第二个参数size_t仅设置为 0。
如果分配的内存大小不等于 0,则第二个参数等于 0 的调用行为是未定义的。