1

我看到了几个关于静态局部变量和类的静态成员的问题。来自此评论中的一条评论,可能是最清晰的一个链接

C++ 入门 说:

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

但是我发现上面的“程序终止时”的描述是模棱两可的。这是否意味着应用程序退出?或者如果它是插件,是否意味着插件已卸载?

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

任何人都可以给出一些解释吗?

4

1 回答 1

0

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

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

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

于 2015-01-19T20:49:29.850 回答