[英]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.