首页 > 解决方案 > 链接器和加载器:静态变量

问题描述

有人可以解释一下来自 Linker and Loaders 的 Levine 的这一部分,第 131 页吗?

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

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

标签: c++cmakefilecompiler-constructionloader

解决方案


不,即使是“静态局部变量”也是静态变量。它不会在程序运行期间更改其位置。

这种变量的“局部性”只是限制了它的可见性。编译器只允许在其本地范围内引用它。

但是,您可以将其地址返回到其他范围并通过 this 访问它。


推荐阅读