我决定在这个程序中使用结构来保持它有条理,所以我现在有一系列结构。我的问题是我是否必须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
答案 0 :(得分:0)
如果在结构中使用指向结构的指针,则必须为此管理内存。 (malloc的/自由)
如果在结构中使用结构,则不管理内部结构的内存。由于它们是外部结构的一部分,因此不需要。
您在外部struc中使用指向结构的指针,因此您必须使用malloc和free。
首先为外部结构分配内存,然后将所有指向内部结构的指针设置为null或为其分配内存。
答案 1 :(得分:0)
你的结构中没有结构。
你的struct中有一个指针,并且已经分配了指针的内存。
考虑以下构造:
typedef struct node {
struct node* next;
}
(这是非常常见的 - 链表)
它应该分配多少个节点?