DLL如何映射到当前程序的虚拟地址空间

时间:2015-08-13 00:17:43

标签: c++ dll

当我在程序中加载DLL时,它在内存中是如何发生的?它是否被加载到我的虚拟地址空间?如果是,那么文本和数据段存储在哪里?我有一个32位程序,我正在维护它,它使用大部分可用堆进行图像处理程序,我想知道我应该多担心加载自己可能占用大量空间的DLL。

1 个答案:

答案 0 :(得分:0)

是的:您的流程需要访问的所有内容都必须位于其地址空间中。这也适用于您的代码和数据。

在这里,您可以找到有关anatomy of process memory and adress space的更多信息 在这里解释dll are loaded into the virtual adress space

备注:dll可能在多个进程之间共享:然后由OS仅在内存中加载一次。但是使用它的每个进程都可能在其自己的虚拟地址空间中的不同位置看到它(有关相对虚拟地址,请参阅此SO answer)。