【发布时间】:2014-02-27 23:40:04
【问题描述】:
我正在关注 this tutorial 学习 C,它说如下:
假设我们要动态分配人员结构。人是这样定义的:
typedef struct { char * name; char age; } person;要在 myperson 参数中分配一个新人,我们使用以下语法:
person * myperson = malloc(sizeof(person));
他们为什么这样做? malloc 带来什么好处?
以下代码可以编译并且看起来工作正常:
typedef struct {
char * name;
char age;
} person;
person p;
p.name = "Henry";
p.age = 9;
printf("%s is %d", p.name, p.age);
我很困惑为什么要使用malloc。
【问题讨论】:
-
好的,创建一个人员数组。从标准输入(或从 argv)获取人数。
-
@user3125367:您实际上可以在没有
malloc()的情况下使用 VLA...例如int numperson = strtol(argv[1], 0, 0); struct person persons[numperson]; -
malloc()在您想要创建一个比创建函数调用寿命更长且不是全局的数据结构时很有用。 -
好的,创建一个返回它的函数。
-
..然后创建一个返回 100,000 个数组的数组,然后将其排队到另一个线程。
标签: c memory memory-management malloc