2013-05-14 59 views
1

數組我想聲明並定義爲結構數組分配內存分配內存如下:申報和結構用C

typedef struct y{ 
int count; 
char *word; 
} hstruct 

我有現在的問題是:

hstruct *final_list; 
final_list = calloc (MAX_STR, sizeof(hstruct)); 

MAX_STRchar word選擇器的最大尺寸。 我打算能夠參考它: final_list[i].count,這將是一個整數和 final_list[i].word,這將是一個字符串。

i是一個整型變量。

但是,這樣的表達式總是返回(null)。我知道我做錯了什麼,但我不知道是什麼。任何幫助,將不勝感激。謝謝。

+0

你是在初始化任何地方的計數或單詞嗎? – 2013-05-14 03:25:53

+1

你對calloc的工作方式感到困惑。第一個參數應該是hstruct數組中元素的個數。 – 2013-05-14 03:41:40

回答

1

包含指針的結構不直接保存數據,而是保存指向數據的指針。指針本身的內存通過您的calloc正確分配,但它只是一個地址。

這意味着你有責任將它分配:

hstruct *final_list; 
final_list = calloc(LIST_LENGTH, sizeof(hstruct)); 

for (int i = 0; i < LIST_LENGTH; ++i) 
    final_list[i].word = calloc(MAX_STR, sizeof(char)); 

這也需要釋放結構本身的陣列之前,以釋放final_list[i].word指向的內存。