2013-03-27 88 views
0

我有這樣的結構:在一個C結構中的一個TCHAR成員 - 如何動態分配成員和結構數組?

struct sArray { 
TCHAR *sName; 
}; 

我想現在動態分配存儲器,用於sArray的陣列,並且還爲動態SNAME分配內存。所以我可以使用類似var [0] .sName,var [1] .sName ... var [x] .sName的東西。

我正在尋找一個簡單的解決方案 - 噸的文章在這裏和網上有關動態分配,但沒有回答這個。

那麼,我該怎麼做?我如何在使用它們時釋放成員和數組內存?

回答

0

試試這個:

int len = 20; //number of elements (sArray's) you want in ar. 
struct sArray *arr = malloc(length*sizeof(struct sArray)); 
int i; 
int nameLength = 30; // max length of name 
for (i = 0; i < length; ++i) 
    arr[i].sName = malloc(nameLength*sizeof(TCHAR)); 

,並釋放內存:當你說: 「你要陣列任何長度」 在

for (i = 0; i < length; ++i) 
    free(arr[i].sName); 
free(arr); 
+0

「INT LEN = 20;」你的意思是數組中的元素數量? – JeffR 2013-03-27 18:54:34

+0

是的,這是數組中的元素數量。 – niculare 2013-03-27 18:56:06

+0

爲什麼是arr [i] .sName而不是arr [i] - > sName? – JeffR 2013-03-27 19:00:17

0
// +1 for the NULL terminal byte 
TCHAR *names = (TCHAR *)calloc(1, (maxNameLen+1) * NumberOfNames); 
struct sArray *array = (struct sArray *)malloc(numberOfArrays); 
array[0].sName = names[0]; 
... 
... 

free(names); 
free(array); 
相關問題