Windows中的DLL加载

时间:2013-03-11 22:53:24

标签: windows

在Windows中,如果有两个进程,每个进程使用相同的DLL,那么显然每个进程分别将DLL加载到其地址空间中,而在Linux中,共享对象被加载一次并映射到不同的进程。有人可以向我解释Windows方法的优缺点吗?

1 个答案:

答案 0 :(得分:2)

我不确定差异是如此明显。 Windows通过加载DLL一次并将共享部分映射到每个进程,共享除DLL的所有用户之间的数据段之外的所有内容。但是,DLL中的任何全局数据都会为每个进程单独加载,以便进程不会无意中共享数据。如果linux不是很相似,我会感到惊讶,否则共享库可能会带来很大的安全风险,更不用说潜在的可靠性问题了。以下是几个参考文献:

来自stackoverflow:

Are .dll files loaded once for every program or once for all programs?

来自维基百科:

http://en.wikipedia.org/wiki/Dynamic-link_library