malloc结构中的结构?

时间:2012-11-10 14:04:48

标签: struct malloc

我决定在这个程序中使用结构来保持它有条理,所以我现在有一系列结构。我的问题是我是否必须malloc一个在另一个结构中的结构。例如:

typedef struct OnlineS {
struct BBSIS *bbsi;
struct BBVIS *bbvi;
struct VBVIS *vbvi;
} *OnlineP;

typedef struct BBSIS{
struct FirstFitS *ff;
struct BestFitS *bf;
struct NextFitS *nf;
int itemNum;
int binNum;
int binMin;
int binMax;
int *items;
}*BBSIP;

依此类推,我的宣言和mallocs也会如此?

OnlineP on = malloc(sizeof (struct OnlineS));
on->bbsi = malloc(sizeof (struct BBSIS));
on->bbsi->bf = malloc(sizeof (struct BestFitS));
on->bbsi->nf = malloc(sizeof (struct NextFitS));
on->bbsi->ff = malloc(sizeof (struct FirstFitS));
on->bbvi = malloc(sizeof (struct BBVIS));
on->bbvi->bf = malloc(sizeof (struct BestFitS));
//ETC

2 个答案:

答案 0 :(得分:0)

如果在结构中使用指向结构的指针,则必须为此管理内存。 (malloc的/自由)

如果在结构中使用结构,则不管理内部结构的内存。由于它们是外部结构的一部分,因此不需要。

您在外部struc中使用指向结构的指针,因此您必须使用malloc和free。

首先为外部结构分配内存,然后将所有指向内部结构的指针设置为null或为其分配内存。

答案 1 :(得分:0)

你的结构中没有结构。

你的struct中有一个指针,并且已经分配了指针的内存。

考虑以下构造:

typedef struct node {
   struct node* next;
}

(这是非常常见的 - 链表)

它应该分配多少个节点?