管理对象变量的生命周期的最佳方法是什么?

可能重复:
我应该什么时候在C ++中使用新的关键字?

我不是一个专业的程序员,我只有与小型项目合作的经验,所以我在理解这里发生的事情时有点麻烦。

我通常使用class_name var_name创建对象。 但是现在我正在'学习'Objective-C,几乎所有的东西都是一个指针,并且你对内存使用有更多的控制。

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

我的问题是,哪个选项是管理内存使用情况(导致内存使用量减少)的更好方法?

  • 正常的声明(对我来说)

    #include <stdio.h>
    #include <iostream>
    #include <deque>
    
    using namespace std;
    
    class myclass 
    {
      public:
        int a;
        float b;
        deque<int> array;
    
      myclass() {cout <<"myclass constructedn";}
      ~myclass() {cout <<"myclass destroyedn";}
      //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;
    }
    
  • 使用newdelete

    #include <stdio.h>
    #include <iostream>
    #include <deque>
    
    using namespace std;
    
    class myclass 
    {
      public:
        int a;
        float b;
        deque<int> array;
    
      myclass() {cout <<"myclass constructedn";}
      ~myclass() {cout <<"myclass destroyedn";}
      //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。 那是对的吗? 他们之间有什么[其他]差异?

    我真的很困惑在哪里使用每个选项。


    使用第一个选项。 第一个选项在本地存储中创建对象实例,而第二个选项在免费商店(aka堆)上创建它。 在堆上创建对象比本地存储更“昂贵”。

    尽量避免在C ++中使用new

    这个问题的答案是一个很好的解读: 在C ++中,为什么new应尽可能少使用?

    链接地址: http://www.djcxy.com/p/96533.html

    上一篇: What is the best way to manage the lifetime of an object variable?

    下一篇: Store a data member on heap memory