簡體   English   中英

C字符串的內存分配隱式?

[英]C string memory allocation implicit?

sizeof(test)返回24。它是3個char*指針的數組,這些指針在我的機器上均為8個字節。 我的問題是C是否也為字符正確分配了空間? 我猜是可以的,因為它可以工作,但是我想確保自己做的正確。

char* test[] = {"QW", "BT", "GH"};
int size = sizeof(test) / sizeof(char*);

是的,它確實。 但是,這些字符可能位於內存的只讀部分。

是的,編譯器將為字符串文字分配空間(通常在只讀靜態數據部分中)。

是。 該值位於內存中數組中使用的* char指針指向的地址處。 是的,它存儲在內存中。

對標准 6.4.5 / 5的重新表述

...字符串文字被實現為具有'char'類型的靜態存儲持續時間數組...

因此,對象被分配為任何其他static變量

static int arr[100] = {0};
if (strcmp(foo, "bar")) exit(0);
int *ptr = malloc(100 * sizeof *ptr);

數組arr和字符串文字"bar"的分配方式相同; 與分配ptr的方式不同。

暫無
暫無

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

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