函数C++中的静态指针变量

Gut*_*Mac 1 c++ static c++11

如果我实现此代码,是否会产生内存泄漏?如果不是内存泄漏,何时删除内存?

class MyClass 
{
  public:
    void foo() {
      static MyClass *element = new MyClass(); 
    }
};
Run Code Online (Sandbox Code Playgroud)

Nia*_*all 5

好吧,两者兼而有之.

是; 没有删除它的代码(关联的delete element).

没有; 只有一个实例,操作系统会在进程退出时回收内存.内存使用量不会无限增长.

考虑到未来可能的维护和变更; 我倾向于使用a std::unique_ptr并避免任何未来内存泄漏的风险.