插件中的静态局部变量销毁

时间:2015-01-19 17:45:20

标签: c++ plugins static destruction

我看到了几个关于静态局部变量和类的静态成员的问题。从这个中的一个评论中可能是最明确的link

  

C ++ Primer说:

     

每个本地静态变量在之前初始化   第一次执行通过对象的定义。本地   当函数结束时,静态不会被破坏;他们被摧毁了   当程序终止时。

但是我发现上面的描述“当程序终止时”是不明确的。这是否意味着申请退出?或者如果它是一个插件,是否意味着插件被卸载?

我注意到我的插件中的本地静态变量在Linux之前以发布模式编译时被卸载了。但是当我将它更改为类成员时,它会在卸载插件时被正确销毁。类/本地静态变量仅在插件中使用。

有人能解释一下吗?

1 个答案:

答案 0 :(得分:0)

静态存储区域由实现管理,而不是由插件管理。

请记住,如果它是普通函数而不是插件,则可以多次调用该函数,并且您希望在静态对象中找到与上次调用时相同的数据。

正确的行为是,如果您可以卸载并重新加载插件,本地静态变量将保留其值,因此在实现退出之前不能销毁它们。