我在一个较大的代码中间有一小段代码:
int *p = new int[100];
p += 50;
delete []p;
编译器会不会只删除第 51st 位置的内存?我认为是的。然而,在数组指针的情况下,编译器持有一个额外的项目,它告诉分配的对象数量。那么,在那种情况下,它不应该继续删除超出分配大小的内存吗? 还是删除第 51st–100th 个元素并保留第 1st–50th 个元素在内存中,在这种情况下可能会发生内存泄漏。
最佳答案
这实际上是未定义的行为。您只能delete
/delete[]
您从new
/new[]
获得的内容。
关于c++ - 内存泄漏与否?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12129992/