我知道 C 程序的内存布局分为文本、堆、堆栈、数据和 bss 段。我认为(不确定)仅此内存布局就是维护不同存储类变量的范围和生命周期的原因。
例如,自动变量存储在堆栈中。每次发生函数调用时,都会创建一个新的堆栈帧,以限制对被调用函数的自动变量的访问。但是它们仍然在它们关联的框架内,并且一旦被调用的函数返回控制权就会开始行动。
因此,我们可以证明自动变量的范围和生命周期是合理的。但是,我想知道其他段(即数据、bss 和堆)中使用了哪些数据结构来维护这样的范围。还是控制范围和生命周期的内存布局以外的其他东西?