函数的调用必须通过堆栈来完成;
函数堆栈:使用的是程序的堆栈段内存空间,程序的堆栈段是系统为程序分配的一种静态数据区,但函数堆栈是在调用函数的时候才动态分配的。所以,不能再编译时就为函数分配好一块静态空间作为堆栈。原因:1)编译时无法确定一个函数运行时所需的堆栈大小;2)函数在调用完后如果还为它保留堆栈空间会浪费内存。
堆栈是自动管理的,局部变量的创建和销毁、堆栈的释放都是函数自动完成的,不需要程序员干涉。
函数堆栈主要三个用途:在进入函数前保存环境变量和返回地址,在进入函数时保存实参的拷贝,在函数体内保存局部变量。