gpt4 book ai didi

c - C中的结构内存分配

转载 作者:太空狗 更新时间:2023-10-29 15:24:07 25 4
gpt4 key购买 nike

使用 malloc 分配一个 struct 实例对其成员的分配有任何影响吗?意思是,正在做这样的事情:

typedef struct { int *i; } test;
int main() {
test *t = malloc(sizeof(test));
t->i = malloc(sizeof(int));
}

... 没有意义,因为 i 应该已经在堆上了,对吧?

或者,结构只是概念上的,可以帮助程序员将漂浮在内存中的两个完全独立的变量分组?意思是:test *t = malloc(sizeof(test)) 只是分配内存来存储指向堆上成员的指针?

我对此感到很困惑..

最佳答案

testi 字段是一个原始的intmallocing test 将处理它所需的内存。将 malloc 的结果分配给 i 应该会产生警告,因为您正在将指针隐式转换为 int

编辑:
正如评论中指出的那样,自发布上述答案以来,该问题已被编辑。如果您的 struct 包含指针,mallocing struct 将分配内存来保存指针,但不会 分配这个指针指向的内存。为此,您需要第二次调用 malloc(例如,test->i = malloc (sizeof (int)))。

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

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