链接器和加载程序:静态变量



有人能解释一下Levine在Linker and Loaders,第131页中的这一部分吗?

符号信息中最棘手的部分是位置信息。静态变量的位置不会改变,但例程中的局部变量可能是静态的,在堆栈、寄存器或优化代码中,在例程的不同部分从一个地方移动到另一个地方…

这是否意味着静态局部变量会根据其所属函数的调用来更改其在内存中的位置?

没有,即使是一个"静态局部变量";是一个静态变量。它在程序运行期间不会更改其位置。

";"局部性";这样一个变量只是限制了它的可见性。编译器只允许在其本地作用域内引用它。

但是,您可以将其地址返回到其他作用域并通过此操作访问它。

最新更新