C 函数中静态变量的生命周期
在函数作用域内将变量声明为静态可确保其仅初始化一次,从而在整个过程中保持其值函数调用。了解其精确的生命周期至关重要。
静态变量何时创建和销毁?
函数中的静态变量的生命周期从第一次遇到它们的声明开始程序终止。这意味着:
跟踪构建/销毁顺序
确定静态变量的构造和销毁的顺序至关重要,尤其是在多线程环境中。标准规定静态对象的析构函数按照构造完成的相反顺序执行。
实现示例
考虑以下代码代码片段:
struct emitter { string str; emitter(const string& s) : str(s) { cout << "Created " << str << endl; } ~emitter() { cout << "Destroyed " << str << endl; } }; void foo(bool skip_first) { if (!skip_first) static emitter a("in if"); static emitter b("in foo"); } int main(int argc, char*[]) { foo(argc != 2); if (argc == 3) foo(false); }
输出:
C:>sample.exe Created in foo Destroyed in foo C:>sample.exe 1 Created in if Created in foo Destroyed in foo Destroyed in if C:>sample.exe 1 2 Created in foo Created in if Destroyed in if Destroyed in foo
这演示了静态变量的生命周期和构造/销毁顺序。
以上是C 函数中的静态变量能存在多久?的详细内容。更多信息请关注PHP中文网其他相关文章!