我是 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
指向一个有效的内存位置,这样检查就没有任何意义了。
我是一名优秀的程序员,十分优秀!