使用golang实现栈(stack)
golang函数调用栈
文章目录golang函数调用栈函数栈帧函数跳转与返回
如果在一个函数中调用另一个函数,编译器就会对应生成一条call指令,程序执行到这条指令时,就会跳转到被调用函数入口处开始执行,而每个函数的最后都有一条ret指令,负责在函数结束后跳回到调用处,继续执行。
函数栈帧
函数执行时需要有足够的内存空间,供它存放局部变量、参数等数据,这段空间对应到虚拟地址空间的栈。
运行时栈,上面是高地址,向下增长,栈底通常被称为栈,栈顶被称为栈指针。
分配给函数的栈空间被称为函数栈帧。
Go语