C++ delete[]运算符的参数能否指向数组的非第一个元素?

C++ delete[]运算符的参数能否指向数组的非第一个元素?,c++,delete-operator,C++,Delete Operator,问题如上所述;例如,如果我有int*ptr=new int[10]并且在对数据进行一些操作后ptr设置为第二、第三、第五或最后一个元素,调用delete[]ptr是否正确?在手册里找不到 否,传递给delete[]运算符的参数必须指向new[] (假设您没有重载delete[]和new[]来做一些疯狂的事情)否,传递给delete[]运算符的参数必须指向new[] (假设您没有超载)> C++ > [>代码> >代码>新[]/COND>做一些疯狂的事情)< P>从C++参考手册中注意:PTR的无

问题如上所述;例如,如果我有
int*ptr=new int[10]
并且在对数据进行一些操作后
ptr
设置为第二、第三、第五或最后一个元素,调用
delete[]ptr
是否正确?在手册里找不到

否,传递给
delete[]
运算符的参数必须指向
new[]


(假设您没有重载
delete[]
new[]
来做一些疯狂的事情)

否,传递给
delete[]
运算符的参数必须指向
new[]


<>(假设您没有超载)> C++ > [>代码> >代码>新[]/COND>做一些疯狂的事情)

< P>从C++参考手册中注意:PTR的无效值导致了未定义的行为。
因此,不建议直接操作分配内存的指针

>从C++参考手册中注意:PTR的无效值会导致未定义的行为。 因此,不建议直接操作分配内存的指针

在手册里找不到

C++11 3.7.4.2/3说

如果标准库中提供给运算符
delete[](void*)
的值不是标准库中先前调用
operator new[](std::size\u t)
operator new[](std::size\u t,const std::nothrow\u t&)返回的值之一,则行为未定义

在手册里找不到

C++11 3.7.4.2/3说

如果标准库中提供给运算符
delete[](void*)
的值不是标准库中先前调用
operator new[](std::size\u t)
operator new[](std::size\u t,const std::nothrow\u t&)返回的值之一,则行为未定义


以下是参考资料:。
ptr
参数到
delete[]
必须是以前由
new[]
返回的指针或空指针。否,必须使用原始地址删除。在内部,
new[]
的一个常见实现将数组的大小放在分配的内存之前,因此
delete[]
(查看您给它的地址后面)会查看数组大小的错误内存部分,造成严重破坏:-)谢谢:)因此它可以像我预期的那样工作。我只是找不到正式记录。以下是参考:。
ptr
参数到
delete[]
必须是以前由
new[]
返回的指针或空指针。否,必须使用原始地址删除。在内部,
new[]
的一个常见实现将数组的大小放在分配的内存之前,因此
delete[]
(查看您给它的地址后面)会查看数组大小的错误内存部分,造成严重破坏:-)谢谢:)因此它可以像我预期的那样工作。我只是找不到正式的记录。