动态链接库中静态变量的行为(C/C++)

nag*_*gul 7 c++ memory static shared-libraries

如所讨论的在这里,一个静态变量被存储在.BSS或.DATA段.

如果静态变量位于动态链接库中的函数内,那么这个内存存储在何处?此变量的存储是否在链接时在链接过程的.BSS或.DATA段中分配?

Rob*_*b K 7

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

  • 不,实际上为连接到它的每个进程加载了一个新的DLL实例,因此不会在进程之间共享数据段. (2认同)