gpt4 book ai didi

c - 在 C 中分配内存困惑

转载 作者:太空狗 更新时间:2023-10-29 15:52:50 27 4
gpt4 key购买 nike

我环顾四周,但仍然无法理解它,假设我有结构:

struct some_struct {
int x;
int y;
char *some_string;
};

假设我们有上面的结构,你会如何为上面的结构分配一些内存?一个人可以简单地做:

struct some_struct *test_struct;
test_struct = malloc(sizeof(struct some_struct));

但这就够了吗?您不需要为some_string 分配一些内存吗?或者,如果结构体包含更多的指针,是否也不需要为它们分配内存?

编辑:还有一件事......假设我的结构 some_struct 已经有数据,例如

struct some_struct *test_struct = malloc(sizeof(some_string);
test_struct->x = 2;
test_struct->y = 3;
test_struct->some_string = "sadlfkajsdflk";

以下代码是否足以释放分配的内存?

free(test_struct);

还是我必须进去释放 char* some_string?

谢谢

最佳答案

调用 malloc(sizeof(struct some_struct)); 为您的结构提供内存,其中包括用于两个整数字段和一个指针字段的空间。

但是,指针字段在指向内存中的有效位置之前不能使用。为此,您需要将其指向有效的内存位置,例如使用 malloc 为其分配内存或将其指向预先存在的有效内存位置:

例如:

test_struct->some_string = malloc(100); // Allocate 100 bytes for the string

关于c - 在 C 中分配内存困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14059465/

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