您的位置:首页 > 其它

关于dll的一些知识

2013-10-05 22:01 253 查看
最近笔了yahoo和微软,都考到了一个题目就是dll,现在总结如下,以求“亡羊补牢,为时未晚”。

5、When a dll is loaded into memory, which part(s) can be shared between processes?(5 Points)
A、code segment
B、static variable
C、global variable
D、external difinitions and references for linking
E、BSS segment

其中BSS segment是指,没有初始化的全局变量段。

在Win16环境中,DLL的全局数据对每个载入它的进程来说都是相同的,因为所有的进程用的都收同一块地址空间;而在Win32环境中,情况却发生了变化,每个进程都有了它自己的地址空间,DLL函数中的代码所创建的任何对象(包括变量)都归调用它的进程所有。当进程在载入DLL时,操作系统自动把DLL地址映射到该进程的私有空间,也就是进程的虚拟地址空间,而且也复制该DLL的全局数据的一份拷贝到该进程空间。(在物理内存中,多进程载入DLL时,DLL的代码段实际上是只加载了一次,只是将物理地址映射到了各个调用它的进程的虚拟地址空间中,而全局数据会在每个进程都分别加载)。也就是说每个进程所拥有的相同的DLL的全局数据,它们的名称相同,但其值却并不一定是相同的,而且是互不干涉的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: