我无法理解指针的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 回答
你总是malloc对象的大小,并将结果转换为指向它的指针 .
所以,如果你
malloc
T
,你将它投射到T*
. 如果T==WORD*
,则将其转换为WORD**
. 这个logica也是反向的,如果你需要将转换结果设置为WORD**
,那么该对象必须是WORD*
.