这是代码
int *p = new int[10];
...
delete[] p;
当调用delete []时,程序如何知道有多少元素?
假设我们在以下代码之间插入了以下代码:
p++;
该程序是否会尝试释放一个元素?它会停在第10个元素吗?
答案 0 :(得分:2)
分配器保留一条记录您要分配的内存量。这通常存储在" head"在您分配的内存之前的段。执行delete []时,解除分配器确切地知道要释放多少内存。
如果修改指针,则会出现未定义的行为。