2015-01-10 56 views
1

當你聲明一個局部變量,我喜歡這樣:來自非變量變量的值來自哪裏?

int i; 

而且你使用這個變量,你會得到不確定的行爲,因爲我還沒有初始化。但我擁有一個「垃圾」價值,這個價值從何而來?它來自內存中的隨機位置嗎?

+3

變量通常在內存中有一個位置,在這種情況下,它的值將是該內存位置發生的任何事情。 – juanchopanza

回答

7

你不知道,你不能說。未定義的行爲意味着任何事情都可能發生。

這就是說,在大多數實施方式中實踐和大部分時間int i;會預留在堆棧上sizeof(int)字節(其通常是某處在主存儲器中),所以i值將是任何恰好是在此時疊加。

但是不要依賴它,並且記住這並非總是如此。

2

它的任何內存在&我以前。