多个进程用LoadLibrary加载同一DLL时,内存会如何占用?

我看的教程上说“当两个应用程序调用了同一动态链接库中的同一函数时,内存里只保留该函数的一份复制件”,这话对吗?如果对,是不是可以这么理解——当多个程序加载了同一个DLL,... 我看的教程上说“当两个应用程序调用了同一动态链接库中的同一函数时,内存里只保留该函数的一份复制件”,这话对吗?

如果对,是不是可以这么理解——当多个程序加载了同一个DLL,该DLL会被第一个加载它的程序放到一个能够被其它也加载了这个DLL的程序所访问的内存空间里、以供各程序通过GetProcAddress来共用?

如果这话不对,那DLL对内存的占用跟静态链接库还有什么差别呢?

LoadLibrary是将整个DLL的代码一次性都加载到内存里呢?还是仅加载该DLL函数地址表之类的?
展开
 我来答
空雪梦见
推荐于2017-10-05 · TA获得超过5598个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1215万
展开全部
加载到内存中。
物理内存中,Windows只保存一份。
不过映射到不同进程的地址空间中的时候可能会在不同位置。

所以在某个进程的角度看,它拥有一份独立的这个DLL。
但是整个系统来看,不同进程用的是同一份内存数据。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式