分配函数作用域成员是否会导致内存泄漏?

用户名

我曾经分配函数作用域的静态成员,因为当对这些函数的调用仅限于调试目的且内存非常有限时,它可以很好地发挥作用。我测试了下一个C ++代码:

#include <stdio.h>

class myClass
{
public:
    myClass(int index) : m_index(index)
    {
        printf("Constructing element %d\n", m_index);
    }

    ~myClass(void)
    {
        printf("Destructing element %d\n", m_index);
    }
    int m_index;
};



void foo()
{
    static myClass class1(1);
    static myClass *class2 = new myClass(2);

    return;
}

void main()
{
    foo();

    return;
}

打印输出是

Constructing element 1
Constructing element 2
Destructing element 1
Press any key to continue . . .

我造成了内存泄漏吗?元素1在哪里分配?元素2在哪里分配?

Brian Bi

这取决于如何定义“内存泄漏”。有些定义它意味着你分配内存,然后释放它。在那种情况下,是的,您的程序存在内存泄漏,因为class2它从未被删除。其他人将其定义为意味着您分配了内存,然后无法取消分配它,因为指向该内存的最后一个剩余指针被覆盖或超出范围。在这种情况下,您的程序没有内存泄漏。

您的代码是否“不好”是一个意见问题。我建议不要new在可以使用智能指针的地方使用显式然而,一些推荐这个使用静态指针,以故意避免被破坏,为了避免错误的对象,如果静态对象是其生存期(结束后访问,否则将出现另一个静态的析构函数中对象,或调用atexit注册的函数

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

调用解构函数时,这是否会导致内存泄漏?

来自分类Dev

调用创建对象的函数是否会导致内存泄漏?

来自分类Dev

调用解构函数时,这是否会导致内存泄漏?

来自分类Dev

CDI会话作用域的bean没有被破坏会导致内存泄漏

来自分类Dev

在非静态方法中使用静态成员是否会导致内存泄漏?

来自分类Dev

从动态分配的解引用指针默认初始化非常量引用函数参数是否会导致内存泄漏?

来自分类Dev

Task.Delay()循环是否会导致内存泄漏?

来自分类Dev

jQuery的事件处理是否会导致内存泄漏?

来自分类Dev

不带挂断调用的ManuallyDrop是否会导致内存泄漏?

来自分类Dev

自定义ClassLoader是否会导致内存泄漏?

来自分类Dev

Task.Delay()循环是否会导致内存泄漏?

来自分类Dev

这段代码是否会导致 JavaScript 内存泄漏

来自分类Dev

如果不先删除侦听器,重新分配数据源是否会导致内存泄漏?

来自分类Dev

使用c_str()返回的指针删除动态分配的std :: string是否会导致C ++中的内存泄漏?

来自分类Dev

从函数返回本地声明的指针是否会导致它切换作用域?

来自分类Dev

从函数返回本地声明的指针是否会导致它切换作用域?

来自分类Dev

Android:由于成员变量导致内存泄漏?

来自分类Dev

从分配的数组在C中创建numpy数组会导致内存泄漏

来自分类Dev

通过将新的value []分配给已填充的数组会导致内存泄漏吗?

来自分类Dev

使用运算符 = 重新分配共享指针会导致内存泄漏?

来自分类Dev

分配很多基本数据类型会导致内存泄漏,你能避免吗?

来自分类Dev

将 self 分配为委托实现会导致内存泄漏吗?

来自分类Dev

在函数作用域内声明的变量会导致 if 语句出错

来自分类Dev

异步代码会导致内存泄漏吗?

来自分类Dev

NavigableMap的subMap会导致内存泄漏吗?

来自分类Dev

为什么QApplication会导致内存泄漏?

来自分类Dev

使用OpenMP编译会导致内存泄漏

来自分类Dev

ConditionalWeakTable的值会导致内存泄漏吗?

来自分类Dev

该程序会导致内存泄漏吗?

Related 相关文章

  1. 1

    调用解构函数时,这是否会导致内存泄漏?

  2. 2

    调用创建对象的函数是否会导致内存泄漏?

  3. 3

    调用解构函数时,这是否会导致内存泄漏?

  4. 4

    CDI会话作用域的bean没有被破坏会导致内存泄漏

  5. 5

    在非静态方法中使用静态成员是否会导致内存泄漏?

  6. 6

    从动态分配的解引用指针默认初始化非常量引用函数参数是否会导致内存泄漏?

  7. 7

    Task.Delay()循环是否会导致内存泄漏?

  8. 8

    jQuery的事件处理是否会导致内存泄漏?

  9. 9

    不带挂断调用的ManuallyDrop是否会导致内存泄漏?

  10. 10

    自定义ClassLoader是否会导致内存泄漏?

  11. 11

    Task.Delay()循环是否会导致内存泄漏?

  12. 12

    这段代码是否会导致 JavaScript 内存泄漏

  13. 13

    如果不先删除侦听器,重新分配数据源是否会导致内存泄漏?

  14. 14

    使用c_str()返回的指针删除动态分配的std :: string是否会导致C ++中的内存泄漏?

  15. 15

    从函数返回本地声明的指针是否会导致它切换作用域?

  16. 16

    从函数返回本地声明的指针是否会导致它切换作用域?

  17. 17

    Android:由于成员变量导致内存泄漏?

  18. 18

    从分配的数组在C中创建numpy数组会导致内存泄漏

  19. 19

    通过将新的value []分配给已填充的数组会导致内存泄漏吗?

  20. 20

    使用运算符 = 重新分配共享指针会导致内存泄漏?

  21. 21

    分配很多基本数据类型会导致内存泄漏,你能避免吗?

  22. 22

    将 self 分配为委托实现会导致内存泄漏吗?

  23. 23

    在函数作用域内声明的变量会导致 if 语句出错

  24. 24

    异步代码会导致内存泄漏吗?

  25. 25

    NavigableMap的subMap会导致内存泄漏吗?

  26. 26

    为什么QApplication会导致内存泄漏?

  27. 27

    使用OpenMP编译会导致内存泄漏

  28. 28

    ConditionalWeakTable的值会导致内存泄漏吗?

  29. 29

    该程序会导致内存泄漏吗?

热门标签

归档