我对局部变量有疑问。我很清楚,在函数调用期间,会分配变量的内存,并在从函数返回后释放内存。但程序从哪里知道在初始化期间使用什么值?
void foo()
{
uint8_t x = 2u;
}
所以我的问题是,在调用函数之前,值2存储在内存中的哪个位置?我猜它是在文本段(在非易失性存储器中)并从那里读取到堆栈。
感谢您的回答。
答案 0 :(得分:0)
编译器决定。
该值甚至可能不会被存储"任何地方:对于某些常量(例如零),只需发出代码来按需计算值,而不是从任何地方复制它。
答案 1 :(得分:0)
当然,这取决于编译器,但无论它是什么,它都会或多或少与您为表达式中的变量赋值一样。也就是说,如果你说
void foo()
{
uint8_t x = 2u;
}
就像你说的那样
void foo()
{
uint8_t x; /* uninitialized */
x = 2u;
}