符号表在编译结束后会怎样?会被保存吗?

我是个新手,想大家指导一下。

1.符号表是在编译开始后建立的吗?
2.编译结束后,符号会怎样?会被保存吗?

符号表在词法分析的时候被建立,编译完成,可以保留(如果希望编译的结果另外有用途,就保留),也可以丢弃。

  1. 符号表是在编译开始后建立的吗 - 编译分前端和后端,前端分词法分析,语法分析。词法分析就把符号表建立了。
  2. 编译结束后,符号会怎样?会被保存吗?-符号表在某些阶段非常有用,比如debug,所以在debug版本里面,符号表都保留了。但是release版一般不保留,首先是因为符号表往往很大,占用太多空间。其次是因为在后端处理时,优化程序可能会调整程序的执行顺序,导致符号表跟编译出来的程序不完全一致。(提醒一下,这也是为什么有时候在debug版本里面的行为是正确的,而release版本却不正确,这是优化导致的)