gpt4 book ai didi

c - 堆栈与原始数据类型的内存分配

转载 作者:太空宇宙 更新时间:2023-11-04 00:16:52 27 4
gpt4 key购买 nike

在 C 中声明一个结构时,说:

typedef struct my_stuct {
int x;
float f;
} STRT;

如果我们想创建这个结构的一个实例并使用它,我们明确需要调用 malloc,在我们实际初始化/使用结构的任何成员之前获取指向这个结构的内存位置的指针:

STRT * my_struct_instance = (STRT *) (malloc(sizeof(STRT)));

但是,如果我声明一个原始数据类型(比如“int a;”)然后想要初始化它(或对它做任何其他操作),我不需要通过调用 malloc 显式地为其分配内存空间在对其执行任何操作之前:

// we do not need to do a malloc(sizeof(i)) blah blah here. Why?
i = 10;

您能否解释一下这种不一致的原因是什么?谢谢!

最佳答案

没有矛盾。这两种方法中的每一种都可以与原语和结构一起使用:

  STRT s1 = {1, 2};
int i1 = 1;

STRT *s2 = (STRT *)malloc(sizeof(STRT));
int *i2 = (int *)malloc(sizeof(int));
...

关于c - 堆栈与原始数据类型的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14163006/

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