2009-07-28 142 views

回答

7

静态变量将在DLL文件的.BSS或.DATA部分结束。链接到DLL的可执行文件可能不会知道它存在。当EXE加载DLL时,系统为它设置DLL的数据部分,然后调用DllMain()。这就是DLL静态生成并初始化的时候。

+0

因此,如果我正确地理解了你,如果多个进程链接到这个共享库,那么这个变量将在不同进程的调用中表现为“静态”? – nagul 2009-07-28 15:41:22

1

是的。排序不同的静态变量之间的差异是:

  • 范围

  • 初始化时间的那些动态初始化。

实现(并注释BSS和DATA段是实现细节)通常是相同的。为了确保动态初始化静态函数变量的正确初始化,一种方法是添加一个额外的布尔值,表示需要动态初始化。