我在GENIVI/capicxx-核心运行时中遇到了一个名为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/数据段中分配?
发布于 2017-11-29 20:18:04
由theRuntime__管理的分配(FYI:不允许使用带有双下划线的标识符;它们是为实现保留的)由std::make_shared创建。这将动态地分配内存,而不管在哪里调用它。
theRuntime__对象本身的存储是静态存储。
https://stackoverflow.com/questions/47560360
复制相似问题