正如所讨论的here,静态变量存储在.BSS或.DATA段中。
如果静态变量位于动态链接库中的函数内,那么这个内存存储在何处?此变量的存储是否在链接时在链接过程的.BSS或.DATA段中分配?
答案 0 :(得分:7)
静态变量将最终出现在DLL文件的.BSS或.DATA部分中。链接到DLL的可执行文件可能甚至不知道它存在。当EXE加载DLL时,系统为它设置DLL的数据部分,然后调用DllMain()。这就是DLL静态存在并初始化的时候。
答案 1 :(得分:1)
是。不同类型的静态变量之间的差异是:
范围
动态初始化的初始化时间。
实现(并注意BSS和DATA段是实现细节)通常是相同的。为了确保动态启动的静态函数变量的正确初始化,一种方法是添加一个额外的布尔值,表示需要动态初始化。