修改指针后,在c ++中取消分配数组

时间:2015-02-24 00:36:17

标签: c++ memory-management delete-operator

这是代码

int *p = new int[10];
...
delete[] p;

当调用delete []时,程序如何知道有多少元素?

假设我们在以下代码之间插入了以下代码:

p++;

该程序是否会尝试释放一个元素?它会停在第10个元素吗?

1 个答案:

答案 0 :(得分:2)

分配器保留一条记录您要分配的内存量。这通常存储在" head"在您分配的内存之前的段。执行delete []时,解除分配器确切地知道要释放多少内存。

如果修改指针,则会出现未定义的行为。