1

我决定在这个程序中使用结构来保持它的组织性,所以我现在有一个结构链。我的问题是我是否必须 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;

依此类推,我的声明和 malloc 会是什么样子?

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
4

2 回答 2

0

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

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

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

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

于 2012-11-10T14:11:10.447 回答
0

您的结构中没有结构。

您的结构中有一个指针,并且已分配指针的内存。

考虑以下构造:

typedef struct node {
   struct node* next;
}

(这很常见——链表)

它应该分配多少个节点?

于 2012-11-10T14:12:22.293 回答