簡體   English   中英

在c中的main函數中初始化的變量存儲在哪里?

[英]where are the variable stored that are initialized in main function in c?

在C語言中,我知道使用malloc動態初始化變量時,該變量存儲在堆區域中。 但是,當進行以下類型的聲明並稍后初始化變量時,在哪里分配內存。

int a[26];

要么

int a[n]; //n is a variable and each element in array a is later initialized through a for loop.

我最初的理解是像在Java中一樣,這里在main函數中聲明的所有變量也都存儲在堆棧區域中。 我的懷疑是-說,有一個函數采用數組“ a”的地址並更改其內容。 要更改“ a”的內容,它應該能夠訪問“ a”中每個元素的地址。 由於函數本身正在主函數頂部的堆棧空間中執行,因此它無法直接訪問數組“ a”的內容。 因此,我的疑問是數組“ a”的內存分配在哪里?

通常, int a[n]; 稱為可變長度數組,並且存儲分配取決於編譯器。

例如, gcc在堆棧內存中分配VLA

FWIW,局部變量通常也存儲在堆棧內存中(減去編譯器優化,如果有的話)。

數組幾乎可以是任意長度,可以用於存儲數千甚至數百萬個對象,但是必須在創建數組時確定大小。 索引中訪問數組中的每個項目,索引只是一個數字,指示對象在數組中的存儲位置或插槽。

存儲在計算機物理內存中的陣列大小

暫無
暫無

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

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