多个动态库具有相同的静态变量,有多少个实例?
让我用一个例子来解释一下: 我有一个 S 类,它是静态的。
我有两个使用 S 的动态库 A 和 B。
我有一个应用程序,与 A 和 B 链接,在这个应用程序中,创建了多少个不同的 S 实例?
所有这些都是在 Ubuntu 中使用 C++ 实现的。
提前致谢
Let me explain it with an example:
I have a class S, which is static.
I have two dynamic libraries A and B that use S.
I have an application, that links with A and B, in this application, how many different instances of S are created?
All this using C++ and in Ubuntu.
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
两个 DLL 都将使用它们自己的静态变量副本。
Both DLLs will use their own copy of the static variable.
我刚刚进行了一些快速测试,似乎如果您使用 Meyer 的单例来提供对 S(SomeClass)的访问:
Linux 下将有一个全局静态变量的实例,即在应用程序和共享库之间共享。
然而,AFAIR SomeClass 需要包含在 DLL 中,而不是 Windows 下的静态库中:当 SomeClass 是静态库的一部分时,我记得在我的应用程序和 DLL 中流动着不同的实例。
I just ran some quick tests and it seems that if you use Meyer's singleton to provide access to S (SomeClass):
there will be one instance of the global static variable under Linux i.e. shared among app and shared libs.
However AFAIR SomeClass needed to be contained in a DLL and not a static lib under windows: when SomeClass was part of a static lib I remember different instances flowing around in an application of mine and in my DLLs.