修改指针后c ++中数组的释放器

Deallocator of arrays in c++ after modification of pointer

这是代码

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

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

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

p++;

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

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

如果您修改指针,将会有未定义的行为。