gpt4 book ai didi

c++单例,静态变量分配有new

转载 作者:行者123 更新时间:2023-11-28 02:04:48 25 4
gpt4 key购买 nike

<分区>

最近看到一段代码如下:

namespace {
mutex* get_server_factory_lock() {
static mutex server_factory_lock;
return &server_factory_lock;
}

typedef std::unordered_map<string, ServerFactory*> ServerFactories;
ServerFactories* server_factories() {
static ServerFactories* factories = new ServerFactories;
// is variable factories assigned every time this function called ?
return factories;
}
} // namespace

/* static */
void ServerFactory::Register(const string& server_type,
ServerFactory* factory) {
mutex_lock l(*get_server_factory_lock());
if (!server_factories()->insert({server_type, factory}).second) {
LOG(ERROR) << "Two server factories are being registered under "
<< server_type;
}
}

看来server_factories()函数和单例类似。
我的问题是:据我所知,factories 是一个静态变量,每次调用函数 server_factories() 时,都会为这个静态变量分配一个新值。但是结果不是,每次调用server_factories(),返回的都是同一个指针。为什么?

PS:编译时启用了 c++11。

What is the lifetime of a static variable in a C++ function?重复

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com