[英]Where memory will be allocated to “Uninitialized Static variable” upon initialization?
[英]where are static buffers allocated?
假設我有一個文件test.c,其中包含:
char buffer1[1024];
int somefunction()
{
char buffer2[1024];
// do stuff
}
現在我知道buffer2是在屬於某些函數調用的幀上的堆棧上分配的,但是在哪里分配了buffer1?
buffer1
在程序的靜態(bss / data)內存部分保留了內存。 這就是所有靜態和全局存在的地方。
它是第三個內存段,如堆棧和堆。
靜態聲明的數組與本地聲明的數組具有不同的存儲規范。 正如您所說,本地數組buffer2
將(通常)在堆棧上創建,而靜態數組buffer1
將(通常)在./bss
或./data
段上創建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.