gpt4 book ai didi

c - 如何在 struct 内部和 main 外部分配内存?

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:16 26 4
gpt4 key购买 nike

我是 C 的初学者,我在尝试在 main 函数之外分配内存时遇到了问题。

我的目标是创建一个 int 大小的指针(在我的结构中)。如果它有 NULL 值,将它传递给 struct 元素,并且它必须可被 main 函数识别。

我尝试了我能想象的一切,但我以前从未感到如此困难,很抱歉没有提供更多信息。

struct info {
int *data;
};

void allocate(struct info *ptr);

int main()
{
struct info *p;
struct info a;

p = &a;
allocate(p);
free(p->data);
return 0;
}

void allocate(struct info *ptr)
{
if(ptr->data == NULL)
{
ptr->data = malloc(sizeof(int));
}
}

我希望 data 应该被 main 识别为具有 int 的大小,如果你能帮助我之后如何释放相同的指针,那将非常有帮助.谢谢。

最佳答案

这根本不可能直接实现。您无法从分配器函数返回的指针中获取已分配内存的大小。

最好的办法是,让另一个成员变量存储已分配内存的大小,并在分配成功后使用大小值进行更新。

也就是说,

if(ptr->data == NULL)

不太可能像您预期的那样为 TRUE,因为 ptr->data 未初始化且内容不确定。无论如何,你必须让 ptr->data 指向一个有效的内存位置,这样检查就没有任何意义了。

关于c - 如何在 struct 内部和 main 外部分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55855073/

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