簡體   English   中英

靜態緩沖區在哪里分配?

[英]where are static buffers allocated?

假設我有一個文件test.c,其中包含:

char buffer1[1024];

int somefunction()
{
      char buffer2[1024];
      // do stuff
}

現在我知道buffer2是在屬於某些函數調用的幀上的堆棧上分配的,但是在哪里分配了buffer1?

這些變量通常在BSS上 (源代碼中沒有顯式初始化的變量,因此它們默認值為0)或數據段 (初始化數據)。 這里, buffer1是未初始化的,因此它可能會在BSS段上分配,BSS段從數據段的末尾開始。

來自bravegnu網站:

在此輸入圖像描述

buffer1在程序的靜態(bss / data)內存部分保留了內存。 這就是所有靜態和全局存在的地方。

它是第三個內存段,如堆棧和堆。

靜態聲明的數組與本地聲明的數組具有不同的存儲規范。 正如您所說,本地數組buffer2將(通常)在堆棧上創建,而靜態數組buffer1將(通常)在./bss./data段上創建。

暫無
暫無

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

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