我无法理解指针的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之前是否需要释放每个元素?
答案 0 :(得分:0)
你总是malloc对象的大小,并将结果转换为指向该对象的指针。
因此,如果您malloc
T
,则将其投放到T*
。如果T==WORD*
,则将其投放到WORD**
。此logica也是反向的,如果您需要将强制转换结果设为WORD**
,则该对象必须是WORD*
。