首先,代码放在头文件timer.h
:
static TimerMgr& Instance() {
static TimerMgr mgr;
return mgr;
}
和TimerMgr::TimerMgr
是私有的。
程序运行时,我看到每个线程都会调用构造函数,因此有多个TimerMgr
个实例。
然后我将函数实现移到timer.cc
,问题解决了。
这是编译器错误吗?
答案 0 :(得分:0)
模块级和公共变量中的静态变量值将在应用程序的生命周期内保留。
但是,使用Dim声明的局部变量仅在声明它们的过程正在执行时才存在。通常,当过程执行完毕时,不保留其局部变量的值,并回收局部变量使用的内存。下次执行该过程时,将重新初始化其所有局部变量。