日期:2014-05-16  浏览次数:20695 次

动态库被多个程度调用时是怎么运行的
请教一个关于动态链接库的问题,当动态链接库被多个程序同时调用时,数据是如何做到互不相干的呢?
------解决方案--------------------
主要是利用虚拟内存,它允许库例程的物理内存安全地在多个独立用户空间共享。
代码段通常被使用进程所共享,也就是说它们在物理内存中占据一个地方。
数据段通常是私有的,每个使用进程都有自己的数据副本。
------解决方案--------------------
补充一下:

DLL可以包含全局数据及局部数据

  变量范围DLL变量的默认范围与应用程序所声明的变量作用域相同,
DLL源文件中的全局变量对于使用DLL的每个进程是全部可见的。

静态变量受限于声明所在块范畴。默认情况下,每个进程具有自己的DLL全局变量及静态变量实例。

小结:数据段也有细分