繁体   English   中英

初始化局部变量的值在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM