gpt4 book ai didi

c - 为什么有时不需要在 C 中分配内存?

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:28 26 4
gpt4 key购买 nike

我看到有时人们即使将结构声明为指针也不会分配内存。为什么会这样?例如:

struct test {
int a;
char *b;
struct _test_2 {
int d;
char *f;
} *test_2;
}

1)

struct test my_var;
my_var.a = 10;
my_var.b = "test string";
my_var.test_2->d = 20;
my_var.test_2->f = "test string2"

2)

struct test my_var;
my_var.a = 10;
my_var.b = "test string";
my_var.test_2 = (struct _test_2) malloc(sizeof(struct _test_2));
my_var.test_2->d = 20;
my_var.test_2->f = "test string2"

// free it after done
free(my_var.test_2);

这两者有什么区别?哪一种是正确的使用方法?

最佳答案

一个正在做适当的内存管理,另一个没有做。您只是在第一个示例中冒险,并希望您的数据不会被覆盖或格式错误。在第二个上,您正确地分配了内存(但您在内部结构分配中缺少 *)。

#2 是最佳选择。

关于c - 为什么有时不需要在 C 中分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46415584/

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