我在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段中分配?
答案 0 :(得分:0)
由theRuntime__
管理的分配(仅供参考:您不允许使用带有双下划线的标识符;它们是为实现保留的)由std::make_shared
创建。这将动态分配内存,无论它在何处被调用。
theRuntime__
对象本身的存储是静态存储。