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

Where does the memory allocation happens for an underlying object of a static shared_ptr?

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

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段?

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

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