delete []运算符的参数可以指向数组的非第一个元素吗?

时间:2013-11-03 16:14:51

标签: c++ delete-operator

问题如上;例如,如果我有int* ptr = new int[10],并且在将数据ptr的某些操作设置为第2个,第3个第5个或最后一个元素后,调用delete[] ptr是否正确?在手册中找不到它。

3 个答案:

答案 0 :(得分:5)

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

返回的相同地址

(假设你没有超载delete[]new[]做一些疯狂的事情)

答案 1 :(得分:2)

从C ++参考手册delete[]请注意,ptr的无效值会导致未定义的行为。
因此,不建议直接操作指向已分配内存的指针!

答案 2 :(得分:2)

  

在手册

中找不到

C ++ 11 3.7.4.2/3说

  如果标准库中提供给operator delete[](void*)的值不是之前在标准库中调用operator new[](std::size_t)operator new[](std::size_t, const std::nothrow_t&)返回的值之一,则

行为未定义< / p>