And*_*w S 0 c memory stack identifier
只是感兴趣.我正在修改我长期被遗忘的生锈的C知识,我想知道在哪里存储声明变量的标识符?
例如,如果我在main中声明以下char值1.
int main(){
char value1 = 'A';
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道char将存储在堆栈框架中的堆栈中.让我们说如果我们在value1上做了一个地址,就像这个和value1一样.我们会得到像0xF37012(一个假设的数字).这将是值所在的位置,但标识符呢?这与0xF37012有什么关联?是否在主要的某个地方的堆栈frane?或者所有标识符都存储在某个全局表或列表中?
除非您专门为调试编译,否则不会存储标识符.如果在编译时设置了debuggability选项,则会有与功能/堆栈帧/静态存储相关联的符号表,这些符号表提供这些映射.