sizeof(test)
返回24.它是一個3 char*
指針的數組,它們在我的機器上各有8個字節。我的問題是C是否爲角色正確分配了空間?我猜這是因爲這個工程,但我想確保我做得正確。C字符串內存分配隱式?
char* test[] = {"QW", "BT", "GH"};
int size = sizeof(test)/sizeof(char*);
sizeof(test)
返回24.它是一個3 char*
指針的數組,它們在我的機器上各有8個字節。我的問題是C是否爲角色正確分配了空間?我猜這是因爲這個工程,但我想確保我做得正確。C字符串內存分配隱式?
char* test[] = {"QW", "BT", "GH"};
int size = sizeof(test)/sizeof(char*);
是的,它的確如此。字符可能在內存的只讀部分。
是的,編譯器會爲字符串文字分配空間(通常在只讀靜態數據部分)。
是的。該值位於數組中使用的* char指針指向的地址的內存中。所以是的,它存儲在內存中。
的6.4.5/5重述...字符串文字被實現爲具有 '字符' 類型靜態存儲時間的陣列...
所以,對象被分配爲任何其他static
變量
static int arr[100] = {0};
if (strcmp(foo, "bar")) exit(0);
int *ptr = malloc(100 * sizeof *ptr);
數組arr
和字符串文字"bar"
以相同的方式分配;不同於分配ptr
的方式。
請注意,它們也是不可修改的。 – 2011-04-03 21:41:11