2016-04-10 109 views
-3

精細,讓我擦了這個問題,然後再試一次:的malloc涉及結構

我定義了兩個結構如下:

LangData

typedef struct 
{ 
    char languageName[60]; 
    char stopwords[2000][60]; 
    int wordcount; 
} LangData; 

第一個結構包含語言的名字,與該語言對應的單詞列表以及跟蹤單詞數量的計數器。

ALLDATA
typedef struct 
{ 
    int languageCount; 
    LangData languages[]; 
} AllData; 

第二結構主要包含第一結構的陣列,和一個計數器來跟蹤我正在與工作語言的數目。

我需要爲語言[]動態分配空間,因爲我沒有處理特定數量的語言。

這是我所做的努力來解決問題,但我不確定它是否正確。這是我的代碼中的許多領域可能會造成的問題之一,我試圖找出問題

int langCount = 0; 

while(readdir(d)) //d is a directory containing language files. 
    langCount++; 

AllData *data = malloc(offsetof(AllData, languages) + 
     sizeof(LangData)*langCount); 
data->languageCount = langCount; 
+1

不需要是專家。只需使用調試器。 – Drop

+2

「我不知道我的問題在哪裏」以及「我再次爲代碼山道歉」意味着您還沒有準備好將問題帶給我們。縮小範圍;編寫一個能夠再現問題的小程序,並找出問題所在,然後再回到我們這裏。 –

+0

或者問一個更具體的問題。例如,取出代碼,描述問題,平臺以及您首選的調試方法,並請求應用該方法的幫助。 –

回答

-1

嵌套的結構是不是指針,所以沒有需要分配它。對於AllData結構用:

AllData *all = malloc (sizeof(*all)); 

編輯:

剛剛看到您正在使用嵌套一個爲陣列。只是以同樣的方式分配嵌套結構的另外一個你分配ALLDATA後:

all->langdata = malloc (sizeof(*all->langdata) * n); 

其中n是元素的數量... 我也從LangData郎[]改變定義LangData *數據