你应该什么时候将指针的大小与结构本身的大小相关联?

时间:2015-10-19 20:12:59

标签: memory struct malloc

我无法理解指针的malloc大小何时与结构的大小相关。例如:

我有一个结构:

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

我想使用指针创建一个指向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之前是否需要释放每个元素?

1 个答案:

答案 0 :(得分:0)

你总是malloc对象的大小,并将结果转换为指向该对象的指针。

因此,如果您malloc T,则将其投放到T*。如果T==WORD*,则将其投放到WORD**。此logica也是反向的,如果您需要将强制转换结果设为WORD**,则该对象必须是WORD*