C语言中的标识符存储在哪里

时间:2014-02-21 02:41:30

标签: c memory stack identifier

只是感兴趣。我正在修改我对C的长期遗忘的生锈知识,我在C中想知道存储声明变量的标识符在哪里?

例如,如果我在main中声明以下char值。

int main(){
char value1 = 'A';
  return 0;
}

我知道char将存储在堆栈框架中的堆栈中。让我们说如果我们在value1上关闭了这个& value1。我们会得到像0xF37012(一个假设的数字)。这将是值所在的位置,但标识符呢?这与0xF37012有什么关联?它是在主要的某个地方的堆栈frane?或者将所有标识符存储在某个全局表或列表中?

2 个答案:

答案 0 :(得分:6)

除非您专门为调试编译,否则标识符 NOT 存储。如果在编译时确实设置了debuggability选项,则会有与功能/堆栈帧/静态存储相关联的符号表来提供这些映射。

答案 1 :(得分:0)

除非生成调试信息,否则将在编译时优化某些标识符。