【发布时间】:2015-01-19 17:45:20
【问题描述】:
我看到了几个关于静态局部变量和类的静态成员的问题。从这里的一条评论中,可能是最清楚的一条link
C++ Primer 说:
每个局部静态变量在 第一次执行通过对象的定义。当地的 函数结束时不会破坏静态;他们被摧毁了 当程序终止时。
但我发现上面“程序终止时”的描述是模棱两可的。这是否意味着应用程序退出?或者如果是插件,是否意味着插件被卸载?
我注意到以前在 Linux 上以发布模式编译时,我的插件中的局部静态变量没有被破坏,它被卸载。但是当我将其更改为类成员时,在卸载插件时它会被正确销毁。类/局部静态变量仅在插件中使用。
谁能解释一下?
【问题讨论】:
-
我不认为它回答了我要问的问题。在这里,我要求插件中的代码。插件程序的开始和结束,我的理解是在您将插件加载到应用程序时开始,程序的结束是当您从程序中卸载插件时(而不是应用程序本身的结束)。如果是这种情况,我认为在卸载插件时应该销毁局部静态变量,但不知何故我确实注意到了不同的行为。我不确定这是否是编译器/系统中的错误,或者是我在上面引用的句子甚至在标准中的歧义。
标签: c++ plugins static destruction