首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Malloc是struct中的struct吗?

Malloc是struct中的struct吗?
EN

Stack Overflow用户
提问于 2012-11-10 22:04:48
回答 2查看 815关注 0票数 1

我决定在这个程序中使用结构来保持它的组织,这样我现在就有了一个结构链。我的问题是,我是否必须对另一个结构中的结构进行malloc。例如:

代码语言:javascript
运行
复制
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会是什么样子呢?

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2012-11-10 22:11:10

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

如果在结构中使用结构,则不需要管理内部结构的内存。因为它们是外部结构的一部分,所以没有必要这样做。

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

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

票数 0
EN

Stack Overflow用户

发布于 2012-11-10 22:12:22

您的结构中没有结构。

在你的结构中有一个指针,并且为指针分配了内存。

考虑以下构造:

代码语言:javascript
运行
复制
typedef struct node {
   struct node* next;
}

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

它应该分配多少个节点?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13322715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档