首页 文章

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

提问于
浏览
0

我无法理解指针的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

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

    所以,如果你 malloc T ,你将它投射到 T* . 如果 T==WORD* ,则将其转换为 WORD** . 这个logica也是反向的,如果你需要将转换结果设置为 WORD** ,那么该对象必须是 WORD* .

相关问题