非常感谢你的答案,解开了我的困惑。我可不可以这样理解:函数源代码被编译后,它的最开始会有移动栈指针的指令,效果就是在栈中分配空间,移动多少是编译器在编译期间计算好了,作为立即数存在于指令中。
可执行文件,一般只有符号的重定位表; 还有一些操作系统,或者编译器,实现某些特别功能的专用表格、 这个符号,一般不包含函数内部的自动变量。 因为自动变量的位置,在每次函数调用过程中,是相对固定的,没有必要使用一个表格。 即便是静态变量,全局变量; 一般也只是有个初始值,需要表记录; 除非需要重定位,否则不需要额外,安排一个表,记录变量的位置。 C++函数内部的静态变量,因为需要保证,按照第一次调用的顺序初始化; 倒是可能,有个表记录一下。
[quote=引用 楼主 Sforforforfor 的回复:] c语言的函数内的局部变量在栈中分配空间,而且是当它所在的函数被调用时才分配,这个过程是自动的还是由系统来管理的?在函数被调用的时候是根据什么来确定要分配多大的空间?
c语言的函数内的局部变量在栈中分配空间,而且是当它所在的函数被调用时才分配,这个过程是自动的还是由系统来管理的?在函数被调用的时候是根据什么来确定要分配多大的空间?
69,382
社区成员
243,073
社区内容
加载中
试试用AI创作助手写篇文章吧