2015-10-19 46 views
0

我无法理解何时malloc大小的指针与结构的大小。例如:什么时候应该malloc指针的大小与结构本身的大小?

我有一个结构:

typedef struct { 
    char *String; 
    int Length; 
} WORD; 

我想使用指针来创建一个指针的单词的数组:

WORD **WordArray; 
WordArray = malloc(sizeof(WORD*)) //Since WordArray is only a single ptr to an array of WORDS 

现在我需要在每个元件分配内存阵列(比方说3):

*WordArray = malloc(sizeof(WORD) * 3); //Need to allocate the actual struct WORD * number of elements in the array 

我是否正确地为这些结构分配内存?如果我最终要释放WordArray,是否需要在释放WordArray之前释放每个单独的元素?

回答

0

你总是malloc的大小的对象,并将结果投给一个指针。

所以,如果你malloc a T,你把它投到T*。如果T==WORD*,那么你将它转换为WORD**。如果您需要将演员结果设置为WORD**,则该逻辑也会反向工作,则该对象必须是WORD*

+0

好吧,所以我对我的假设是正确的,我只需要malloc一个指向数组的指针('WordArray = malloc(sizeof(WORD *))')和3个数组中的每个元素的结构('* WordArray = malloc(sizeof(WORD)* 3);')? – user1224478

+0

@ user1224478:如果你真的**需要'malloc'指向该数组的指针,那么是的。但我不能从这里说出你是否需要第二级。 – MSalters

相关问题