簡體   English   中英

變量聲明和內存分配

[英]Variable Declaration & Memory Allocation

我想知道在局部變量聲明過程中是否分配了內存。

假設我在函數int a = 10中編寫了此代碼 分配內存並在其中存儲值10。

int呢? 該聲明語句會分配4個字節的內存嗎?

謝謝。

調用方法時,每個局部變量的空間都在堆棧上分配。

因此,如果您在方法中聲明一個int變量,則它的堆棧幀將占用額外的4個字節的內存。

在其他任何地方都不會使用任何額外的內存,並且在方法返回時會清除它。

這里要理解的重要一點是,MSIL不支持在方法的任何地方聲明屬性。 每當您在C#中聲明變量時,該聲明就會移至已編譯字節碼中的方法標頭中。 調用方法時將分配每個變量。

局部變量通常存儲在堆棧中,因此確實為int分配了字節:

int a;

因為它僅使用默認值(0),所以它與:

int a = 0;

int是一種值類型,因此在堆棧上存儲其值。 如果要使用引用類型創建局部變量:

SomeClass a;

然后在堆棧上,它將僅分配給引用 (值為null,因為它是引用類型的默認值)。 有關更多信息,您可以參考此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM