[英]where are the variable stored that are initialized in main function in c?
[英]Where is an initialized local variable's value stored before the stack in C?
我对局部变量有疑问。 我很清楚,在函数调用期间,将为变量分配内存,并且从函数返回后,将释放内存。 但是程序从哪里知道初始化期间要使用什么值?
void foo()
{
uint8_t x = 2u;
}
所以我的问题是,在调用函数之前,值2在哪里存储在内存中? 我的猜测是它在文本段中(在非易失性存储器中),并从那里读取到堆栈。
谢谢你的回答。
编译器可以决定。
该值甚至可能不会“存储”在任何地方:对于某些常量(例如零),仅发出代码以按需计算该值而不是从任何地方复制它就容易了。
当然,这取决于编译器,但是无论它是什么,它都将与为表达式中的变量分配值差不多相同。 也就是说,如果你说
void foo()
{
uint8_t x = 2u;
}
就像你说的那样
void foo()
{
uint8_t x; /* uninitialized */
x = 2u;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.