动态链接库数据

【勇芳软件工作室】汉化HomePreviousNext

基于Win32的DLL可以包含全局数据或本地数据。

可变范围

DLL变量的默认范围与应用程序中声明的变量的默认范围相同。DLL源代码文件中的全局变量是使用该DLL的每个进程的全局变量。静态变量的范围限于声明它们的块。因此,默认情况下,每个进程都有自己的DLL全局变量和静态变量实例。

您的开发工具可能允许您覆盖全局变量和静态变量的默认范围。有关更多信息,请参阅开发工具附带的文档。

动态内存分配

当DLL使用任何内存分配功能(GlobalAllocLocalAllocHeapAllocVirtualAlloc)分配内存时,内存将分配到调用进程的虚拟地址空间中,只能访问线程的进程。

DLL可以使用文件映射来分配可以在进程之间共享的内存。有关如何使用文件映射创建命名共享内存的一般讨论,请参阅文件映射.有关使用DllEntryPoint功能使用文件映射设置共享内存的示例,请参阅在动态链接库中使用共享内存.

线程本地存储

线程本地存储(TLS)功能使DLL能够为多线程进程的每个线程分配用于存储和检索不同值的索引。例如,电子表格应用程序可以在每次用户打开新的电子表格时创建同一个线程的新实例。提供各种电子表格操作功能的DLL可以使用TLS来保存有关每个电子表格(行,列等)的当前状态的信息。有关线程本地存储的一般讨论,请参阅线程本地存储.有关使用DllEntryPoint功能设置线程本地存储的示例,请参阅在动态链接库中使用线程本地存储.