关于C中的"静态",它是如何由编译器实现的?

Jos*_*son 5 c

关于C中的"静态",它是如何由编译器实现的?

这是彭博采访问题.有什么想法吗 ?

Oli*_*rth 3

[[我假设我们static在这里讨论的是变量的上下文,因为static函数只是一个编译/链接时的东西,没有运行时的影响。]]

简而言之,它是特定于实现的。编译器可以自由地做它选择的任何事情。

通常(但绝不排他),静态数据存储在可执行映像的固定位置的.bss.data部分中。这具有性能优势,因为可以使用文字地址访问它们,而不是指针取消引用(就像基于堆栈的变量的情况一样)。由于这是二进制文件的一部分,这也意味着首次加载可执行文件时初始值会自动映射到内存中;不需要初始化例程。

  • @Andy,也许他们想要的答案是“在什么情况下是静态的”?它的特定于实现通常是一个安全的答案,但也许他们只是想测试根据当前上下文对“静态”一词的不同含义的认识。 (2认同)