为什么以下C ++代码中发生内存泄漏?

巴布拉尔

假设存在一个名为Vec的类,并且有一个称为vector的向量,arr因为它是其唯一成员。以下代码不会泄漏内存。(这意味着我的Vec的析构函数正在按预期方式工作。)

int main() {
    Vec *obj = new Vec(5); // initializes a vector of size 5
    delete obj;
}

然而,在下面的代码,有内存泄漏。但为什么?我似乎delete每次使用都有一个new我想念什么?

int main() {
    Vec* obj;
    obj = new Vec(5);

    if (true) {
        delete obj;
        Vec* obj = new Vec(6);
    }

    delete obj;
}

PS:我使用valgrind检查内存泄漏。

用户名

范围。

Vec* obj = new Vec(6);产生一个obj仅存在于if主体内的新变量并将其隐藏obj在外部范围内。内部obj超出范围,并在if主体的末尾消失,最后一个指针指向该新分配。然后,该代码重新deleteS上obj在外部范围(不是一件好事做)。

解:

int main() {
    Vec* obj;
    obj = new Vec(5);

    if (true) {
        delete obj;
        obj = new Vec(6); // re-uses the original obj
    }

    delete obj;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以下C代码是否发生内存泄漏?

来自分类Dev

以下C代码是否发生内存泄漏?

来自分类Dev

为什么此代码在C ++中会导致内存泄漏

来自分类Dev

为什么以下C语言代码显示-1?

来自分类Dev

为什么以下代码在C ++中是非法的

来自分类Dev

为什么以下C语言代码给出此输出?

来自分类Dev

为什么内存泄漏仅在赋值运算符重载的情况下发生,而不在复制构造函数中发生,为什么复制和交换惯用语解决它

来自分类Dev

为什么此代码不会引起内存泄漏?

来自分类Dev

为什么基本的Swift代码会导致内存泄漏?

来自分类Dev

为什么enqueueAcquireGLObjects()在此OpenCL代码中泄漏内存?

来自分类Dev

为什么/我的代码如何导致内存泄漏?

来自分类Dev

取消useEffect挂钩中的所有异步/等待任务以防止反应中发生内存泄漏的正确方法是什么?

来自分类Dev

为什么在我的代码中发生__stack_chk_fail?

来自分类Dev

这段Java代码中发生了什么?

来自分类Dev

此代码中发生了什么?

来自分类Dev

这段代码中发生了什么?

来自分类Dev

Flask简介代码中发生了什么?

来自分类Dev

此python代码中发生了什么?

来自分类Dev

此Javascript代码中发生了什么?

来自分类Dev

这段代码中发生了什么?

来自分类Dev

简单的测试代码中发生了什么

来自分类Dev

这个顶点代码中发生了什么?

来自分类Dev

调用 return 时,此 C 代码中发生了什么?

来自分类Dev

Qt:以下代码中是否存在内存泄漏?

来自分类Dev

在以下代码的上下文中,为什么“ cout << c”是合法的而“ c =“ x””是非法的?

来自分类Dev

为什么以下代码使用`c ++ 03`而不是`c ++ 11`进行编译

来自分类Dev

为什么以下代码使用`c ++ 03`而不是`c ++ 11`进行编译

来自分类Dev

消耗消息时发生内存泄漏-RabbitMQ C库

来自分类Dev

在C#中使用Powershell远程调用发生内存泄漏

Related 相关文章

  1. 1

    以下C代码是否发生内存泄漏?

  2. 2

    以下C代码是否发生内存泄漏?

  3. 3

    为什么此代码在C ++中会导致内存泄漏

  4. 4

    为什么以下C语言代码显示-1?

  5. 5

    为什么以下代码在C ++中是非法的

  6. 6

    为什么以下C语言代码给出此输出?

  7. 7

    为什么内存泄漏仅在赋值运算符重载的情况下发生,而不在复制构造函数中发生,为什么复制和交换惯用语解决它

  8. 8

    为什么此代码不会引起内存泄漏?

  9. 9

    为什么基本的Swift代码会导致内存泄漏?

  10. 10

    为什么enqueueAcquireGLObjects()在此OpenCL代码中泄漏内存?

  11. 11

    为什么/我的代码如何导致内存泄漏?

  12. 12

    取消useEffect挂钩中的所有异步/等待任务以防止反应中发生内存泄漏的正确方法是什么?

  13. 13

    为什么在我的代码中发生__stack_chk_fail?

  14. 14

    这段Java代码中发生了什么?

  15. 15

    此代码中发生了什么?

  16. 16

    这段代码中发生了什么?

  17. 17

    Flask简介代码中发生了什么?

  18. 18

    此python代码中发生了什么?

  19. 19

    此Javascript代码中发生了什么?

  20. 20

    这段代码中发生了什么?

  21. 21

    简单的测试代码中发生了什么

  22. 22

    这个顶点代码中发生了什么?

  23. 23

    调用 return 时,此 C 代码中发生了什么?

  24. 24

    Qt:以下代码中是否存在内存泄漏?

  25. 25

    在以下代码的上下文中,为什么“ cout << c”是合法的而“ c =“ x””是非法的?

  26. 26

    为什么以下代码使用`c ++ 03`而不是`c ++ 11`进行编译

  27. 27

    为什么以下代码使用`c ++ 03`而不是`c ++ 11`进行编译

  28. 28

    消耗消息时发生内存泄漏-RabbitMQ C库

  29. 29

    在C#中使用Powershell远程调用发生内存泄漏

热门标签

归档