什么时候应该malloc指针的大小与结构本身的大小?
问题描述:
我无法理解何时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之前释放每个单独的元素?
答
你总是malloc的大小的对象,并将结果投给一个指针。
所以,如果你malloc
a T
,你把它投到T*
。如果T==WORD*
,那么你将它转换为WORD**
。如果您需要将演员结果设置为WORD**
,则该逻辑也会反向工作,则该对象必须是WORD*
。
好吧,所以我对我的假设是正确的,我只需要malloc一个指向数组的指针('WordArray = malloc(sizeof(WORD *))')和3个数组中的每个元素的结构('* WordArray = malloc(sizeof(WORD)* 3);')? – user1224478
@ user1224478:如果你真的**需要'malloc'指向该数组的指针,那么是的。但我不能从这里说出你是否需要第二级。 – MSalters