静态shared_ptr的底层对象的内存分配在哪里?

时间:2017-11-29 19:29:47

标签: c++ c++11 static shared-ptr

我在GENIVI / capicxx-core-runtime中遇到了一个名为Runtime的类。下面指定的部分代码。

class Runtime {
 public:
     COMMONAPI_EXPORT static std::shared_ptr<Runtime> get();
     COMMONAPI_EXPORT Runtime();
     COMMONAPI_EXPORT virtual ~Runtime()

 private:
     static std::shared_ptr<Runtime> theRuntime__;
};

std::shared_ptr<Runtime> Runtime::theRuntime__ = std::make_shared<Runtime>();

std::shared_ptr<Runtime> Runtime::get() {
   return theRuntime__;
}

我怀疑是theRuntime__变量。由于shared_ptr进行堆分配,在这种情况下是否会在堆上分配theRuntime__变量的基础对象,还是在BSS / DATA段中分配?

1 个答案:

答案 0 :(得分:0)

theRuntime__管理的分配(仅供参考:您不允许使用带有双下划线的标识符;它们是为实现保留的)由std::make_shared创建。这将动态分配内存,无论它在何处被调用。

theRuntime__对象本身的存储是静态存储。