假设你有-
struct Person {
char *name;
int age;
int height;
int weight;
};
如果你这样做——
struct Person *who = malloc(sizeof(struct Person));
C 如何知道要分配多少内存name变量,因为这可以容纳大量数据/字符串?我是 C 语言新手,对内存分配感到困惑。
它不会知道,您必须单独为其分配内存。
struct Person *who = malloc(sizeof(struct Person));
分配足够的内存来存储该类型的对象Person
.
里面一个Person
反对该成员name
仅占用相当于指针大小的空间char
.
以上malloc
只需分配那么多空间,为了能够对成员指针执行任何有意义的操作,您必须单独为其分配内存。
#define MAX_NAME 124
who->name = malloc(sizeof(char) * MAX_NAME);
现在是会员name
指向大小为的动态内存124
堆上的字节,可以进一步使用。
另外,使用完毕后,您需要记住free
显式地使用它,否则您将最终导致内存泄漏。
free(who->name);
free(who);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)