我决定在这个程序中使用结构来保持它的组织,这样我现在就有了一个结构链。我的问题是,我是否必须对另一个结构中的结构进行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发布于 2012-11-10 22:11:10
如果在结构中使用指向结构的指针,则还必须管理该结构的内存。(malloc/free)
如果在结构中使用结构,则不需要管理内部结构的内存。因为它们是外部结构的一部分,所以没有必要这样做。
您在外层struc中使用了指向结构的指针,因此必须使用malloc和free。
首先为外部结构分配内存,然后将所有指向内部结构的指针设置为null或为其分配内存。
发布于 2012-11-10 22:12:22
您的结构中没有结构。
在你的结构中有一个指针,并且为指针分配了内存。
考虑以下构造:
typedef struct node {
struct node* next;
}(这是非常常见的--链表)
它应该分配多少个节点?
https://stackoverflow.com/questions/13322715
复制相似问题