10.10临时确保局部变量用的内存空间
在代码清单10-6中定义了10个局部变量。这是为了表示存储局部变量的不仅仅是栈,还是寄存器。为了确保c1~c10所需的领域,寄存器空闲时就使用寄存器,寄存器空间不足就使用栈。
x86 系列 CPU拥有的寄存器中,程序可以操作的有十几个。其中空闲的,最多也只有几个。因而,局部变量数目很多的时候,可分配的寄存器就不够了。这种情况下,局部变量就会申请分配栈的内存空间。虽然栈的内存空间也是作为一种存储数据的段定义来处理的,但在程序各部分都可以共享并临时使用这一点上,它和 DATA 段定义及 BSS 段定义在性质上还是有些差异的。例如,在函数入口处为变量申请分配栈的内存空间的话,就必须在函数出口处进行释放。否则,经过多次调用函数后,栈的内存空间就会被甩光。