none
程序中的静态指针变量该在哪释放内存? RRS feed

  • 问题

  • 我在一个类中定义了一个静态的指针变量,并用new初始化了这个变量,但是我不知道delete语句该写在哪个地方。有人说系统进程退出时会自动清理掉,不需要管,是这样吗?

    2011年10月26日 7:52

答案

  • 如果你不需要在 delete 中执行有意义的析构的话,在程序退出时的确会自动清理,所以无伤大雅。

     

    但是,作为一个完美的程序,确实不好。

     

    尝试:

    struct CC
    {
     static int *p;
    };

    struct _CC
    {
     _CC()
      : _p(new int())
     {
     }
     ~_CC()
     {
      if (_p != nullptr)
      {
       delete _p;
       _p = nullptr;
      }
     }
     int *_p;
    };

    static _CC _cc;

    int *CC::p = _cc._p;

     



    2011年10月26日 10:32

全部回复

  • 如果你不需要在 delete 中执行有意义的析构的话,在程序退出时的确会自动清理,所以无伤大雅。

     

    但是,作为一个完美的程序,确实不好。

     

    尝试:

    struct CC
    {
     static int *p;
    };

    struct _CC
    {
     _CC()
      : _p(new int())
     {
     }
     ~_CC()
     {
      if (_p != nullptr)
      {
       delete _p;
       _p = nullptr;
      }
     }
     int *_p;
    };

    static _CC _cc;

    int *CC::p = _cc._p;

     



    2011年10月26日 10:32
  • 恩,我是需要在析构函数中处理一些其他的东西的。谢谢你的提示!

    2011年10月26日 11:28