c++ - 内存泄漏与否?

标签 c++ arrays pointers memory-leaks

我在一个较大的代码中间有一小段代码:

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/

相关文章:

c++ - openssl 加密库 - base64 转换

c++ - 生命周期 dse 的 gcc 优化诊断

c++ - 检测非标准滚动条

java - 返回带有 Jersey 的数组

c - 如何从文件中获取所有数字并将它们输入到数组中?

c++ - 在 C++ 中查找数组的大小

C++ 部分模板特化问题

ios - 通过引用传递的对象不起作用?

C 函数计算不正确

c++ - 将 C++ 函数指针传递给 Fortran 子例程