簡體   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