zos*_*ska 3 c linker static shared-libraries
我的问题是关于在共享库中创建的静态变量(静态void*)(让我们称之为'S'),但它是一个未在外面显示的内部变量,但API的每次调用都依赖于它.现在让我们考虑一个案例,当一个程序(让我们称之为主程序)链接到另外两个共享库,并且每个库都与库S链接.现在,对于我们的主程序,这个静态变量会发生什么?它有一个实例吗?二?
nwe*_*hof 6
Suma的回答是正确的.只有一个静态变量实例.这也是为什么在共享库中使用静态全局变量可能是一个巨大的问题.这可能发生的一个现实世界的例子:
现在,如果某些PHP代码修改了像libxml2中的解析器选项这样的全局设置,Perl代码也会看到这些更改.这可能导致非常难以诊断的错误.因此,您应该不惜一切代价避免共享库中的全局状态.
(使用libxml2,您可以在本地进行大部分设置.)
归档时间:
12 年 前
查看次数:
4866 次
最近记录: