XCODE5.1 C ++静态单例,但创建了多个实例

时间:2014-01-22 03:20:46

标签: c++ xcode singleton

首先,代码放在头文件timer.h

static TimerMgr&  Instance() {
    static TimerMgr mgr;
    return mgr;
}

TimerMgr::TimerMgr是私有的。

程序运行时,我看到每个线程都会调用构造函数,因此有多个TimerMgr个实例。

然后我将函数实现移到timer.cc,问题解决了。

这是编译器错误吗?

1 个答案:

答案 0 :(得分:0)

模块级和公共变量中的静态变量值将在应用程序的生命周期内保留。

但是,使用Dim声明的局部变量仅在声明它们的过程正在执行时才存在。通常,当过程执行完毕时,不保留其局部变量的值,并回收局部变量使用的内存。下次执行该过程时,将重新初始化其所有局部变量。