今天,我读了一篇有关golang goroutine的文章。它说如果递归调用太多,则goroutine空间将得到扩展。在我看来,程序运行时,每个函数调用都会创建一个新的堆栈,系统仅将指向创建的堆栈的指针状对象(一些机械代码)推送到调用程序函数堆栈顶部。当cpu加载该对象时,它将保存当前上下文并跳转到创建的堆栈。返回被调用函数后,cpu将寄存器中返回的值写回到对象。如果我的理解是正确的,则在调用堆栈上只需要一点空间即可进行递归函数调用。在阅读该文章时,我怀疑自己的理解是错误的。可以使每个函数调用使整个被调用函数代码被推入调用函数堆栈,但不能推入类似指针的对象。如果为真,则函数调用将在调用堆栈上占用大量空间。我用Google搜索了这个问题,但没有结果。有没有人可以帮助我?
更新:我找到了答案https://www.geeksforgeeks.org/memory-layout-of-c-program/。