2011-04-03 110 views
0

sizeof(test)返回24.它是一個3 char*指針的數組,它們在我的機器上各有8個字節。我的問題是C是否爲角色正確分配了空間?我猜這是因爲這個工程,但我想確保我做得正確。C字符串內存分配隱式?

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

回答

6

是的,它的確如此。字符可能在內存的只讀部分。

3

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

2

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

0

我在the Standard

的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的方式。

+0

請注意,它們也是不可修改的。 – 2011-04-03 21:41:11