【发布时间】:2016-09-27 22:18:45
【问题描述】:
我想知道在这种情况下是否必须分配两次内存。 例如: 考虑到我有结构:
struct ErrorCheck {
int returnValue;
struct Nodes * list;
};
struct Nodes {
char * name;
int grade;
struct Nodes * next;
};
还有一个分配它们的函数:
void buildList() {
struct ErrorCheck * newStruct;
newStruct = malloc(sizeof(struct ErrorCheck));
newStruct->list = malloc(sizeof(struct Nodes));
}
如上所示,我必须两次 malloc 吗?或者如果我想同时使用这两个结构,第一个 malloc 就足够了。
如:newStruct = malloc(sizeof(struct ErrorCheck)); 本身就足够了,是否存在两种情况都可以为真或为假的情况?
【问题讨论】:
-
让我们考虑一下:您想要访问 两个 对象。那么分配 one 对象就足够了吗?我不这么认为。
-
技术上可以只使用一个malloc,但它很麻烦,不值得努力和复杂
-
注意:在
newStruct->list = malloc(sizeof(struct Nodes));newStruct->list->next(和其他成员)之后仍然是单元化的。 ` -
当然,但是那些在其他函数中被初始化:)
标签: c pointers struct malloc dynamic-memory-allocation