修改指针后c ++中数组的释放器
Deallocator of arrays in c++ after modification of pointer
这是代码
int *p = new int[10];
...
delete[] p;
程序如何知道调用 delete[] 时有多少个元素?
假设我们在中间插入了以下代码:
p++;
程序会尝试再释放一个元素吗?它会停在第 10 个元素吗?
分配器会记录您分配的内存量。这通常存储在您正在分配的内存之前的 "head" 段中。当您执行 delete[] 时,解除分配器确切地知道要释放多少内存。
如果您修改指针,将会有未定义的行为。
这是代码
int *p = new int[10];
...
delete[] p;
程序如何知道调用 delete[] 时有多少个元素?
假设我们在中间插入了以下代码:
p++;
程序会尝试再释放一个元素吗?它会停在第 10 个元素吗?
分配器会记录您分配的内存量。这通常存储在您正在分配的内存之前的 "head" 段中。当您执行 delete[] 时,解除分配器确切地知道要释放多少内存。
如果您修改指针,将会有未定义的行为。