gpt4 book ai didi

c - char数组的内存分配

转载 作者:太空狗 更新时间:2023-10-29 17:09:00 25 4
gpt4 key购买 nike

假设你有-

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(who->name);
free(who);

关于c - char数组的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9081204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com