如何最好地管理对象变量的生命周期?

27 浏览
0 Comments

如何最好地管理对象变量的生命周期?

这个问题已经有了答案

可能重复:

在C++中何时应该使用new关键字?

我不是专业的程序员,只有在小项目中工作的经验,所以我有点难以理解这里发生了什么。

我通常使用 class_name var_name 创建对象。但是现在我正在“学习”Objective-C,几乎所有东西都是指针,并且您可以更好地控制内存使用。

现在我正在创建一个包含无限循环的应用程序。

我的问题是,哪种选项更好地管理内存使用(导致内存使用更少)?

  1. 正常声明(对我而言)

    #include 
    #include 
    #include 
    using namespace std;
    class myclass 
    {
      public:
        int a;
        float b;
        deque array;
      myclass() {cout <<"myclass constructed\n";}
      ~myclass() {cout <<"myclass destroyed\n";}
      //Other methods
      int suma();
      int resta();
    };
    int main(int argc, char** argv)
    {
        myclass hola;
        for(1)
        {
            // Work with object hola.
            hola.a = 1;
        }
        return 0;
    }
    

  2. 使用newdelete

    #include 
    #include 
    #include 
    using namespace std;
    class myclass 
    {
      public:
        int a;
        float b;
        deque array;
      myclass() {cout <<"myclass constructed\n";}
      ~myclass() {cout <<"myclass destroyed\n";} //Other methods int suma(); int resta(); }; int main(int argc, char** argv) { myclass hola; for(1) { myclass *hola; hola = new myclass; // Work with object hola. hola->a = 1;
            delete hola;
        }
        return 0;
    }
    

我认为选项2使用更少的内存并更有效地释放deque。 是这样吗? 他们之间的其他区别是什么?

我真的很困惑,不知道何时使用每个选项。

admin 更改状态以发布 2023年5月24日
0
0 Comments

使用第一种选项。第一种选项在本地存储中创建对象实例,而第二种选项在自由存储区(也称为堆)中创建对象。在堆上创建对象比在本地存储中创建对象更“昂贵”。

尽可能避免在C++中使用 new

这个问题的答案是一个不错的阅读材料:在C++中,为什么应该尽可能少使用new

0