为什么动态库中的js全局变量动态赋值是可以用的

静or动态库中的全局变量被不同的dll调用修改,其值是否独立?
今天做了一个C++程序实验,以确认一下静态库和动态库中的全局变量被不同的dll调用时,其值是各自独立的还是共享的?
结果显示:
一个静态库中的全局变量被同一个进程的不同的dll调用时,每一个dll对这些全局变量都各自有一份独立的存储空间,即使这些dll处于同一个线程。因为是静态库,在编译每一个独立的dll时,就已经为每个dll分配了静态库中全局变量的存储空间,所以在一个dll中修改被调用静态库中某个全局变量,并不会影响另一个dll中调用的同一个静态库中这个全局变量的值。
一个动态库中的全局变量被同一个进程的不同的dll调用时,所有的dll共享这些全局变量,当一个dll修改了被调用的dll中某个全局变量的值,其它的dll再读取这个被调用dll的全局变量时,值也会跟着改变。
(下面的没有实验验证,很多资料都这么讲,应该不会错)
此外,从网上查的资料看,一个动态库中的全局变量被不同进程调用时,在没有对这些全局变量修改的情况下,它们是共享的。如果一个进程修改了被调用dll中某个全局变量的值,那么根据copy
write机制,这个进程会获得这些全局变量的一个copy,即修改的全局变量只对这个进程有效。这样使不同的进程对同一个dll中全局变量做的修改不会相互影响。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。2015年9月 C/C++大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 动态库导出全局变量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信