【发布时间】:2018-04-21 00:44:33
【问题描述】:
【问题讨论】:
-
与其说是“将范围存储在堆栈中”,不如说是事物存储在堆栈中,从而为它们提供了范围。如果这没有立即意义,请阅读堆分配和堆栈分配之间的区别。
-
范围只是一个术语,表示最近的东西(函数调用、变量、参数)被推入堆栈,堆栈是 RAM 的一部分。
-
并不是你将作用域存储在堆栈中; 编译器会这样做,以跟踪什么在哪里。当代码开始一个块时,编译器为变量名创建一个新记录并将其压入堆栈;当变量被定义时,它们的名字进入最近的记录。当代码离开一个块时,它将最后一条记录从堆栈中弹出并丢弃。这将删除该块中定义的所有名称。