请问这句话对吗 c++

来源:百度知道 编辑:UC知道 时间:2024/05/22 05:27:14
从局部变量声明的时候,它就在堆栈空间了,而不是调用函数的时候,才让它入栈的 是不是就说明局部变量是在编译的时候就由内存空间了,而不是在运行的时候

根据生成的汇编代码, 最终情况大概是这样的

call 函数地址
进入函数
sub esp , 局部变量需要的空间
使用变量
add esp
ret

也就是说进入函数后,首先吧 栈指针往下增长,留出局部变量的空间, 然后函数运行完,先修正栈指针,然后再返回。

这样看来的话,你的话就是错的。
不过注意的是有的局部变量会优化成使用寄存器的 , 这样就不需要在栈上分配空间了

对的,“从局部变量声明的时候,它就在堆栈空间了 ”最好不要用 堆栈,用函数栈

你声明的局部变量在声明时候应该没有分配内存空间。在编译时候直接从栈中提取内存

what you said is true.供你参考:

理解错误
局部变量只在一个函数中有意义,函数结束,变量就没有意义了,这个空间有可能是另一个局部变量的空间了,所以说局部变量是在编译的时候就由内存空间的说法是错的