我必须从另一个函数中分配一个结构,显然是使用指针。 我一直在盯着这个问题几个小时,并试图用一百万种不同的方式来解决它。Malloc里面另一个函数
这是一些示例代码(很简单):
...
some_struct s;
printf("Before: %d\n", &s);
allocate(&s);
printf("After: %d\n", &s);
...
/* The allocation function */
int allocate(some_struct *arg) {
arg = malloc(sizeof(some_struct));
printf("In function: %d\n", &arg);
return 0;
}
这确实给我同样的地址之前和分配呼叫后:
Before: -1079752900
In function: -1079752928
After: -1079752900
我知道这可能是因为它使函数中的一个副本,但我不知道如何实际处理作为参数的指针。我尝试了定义some_struct *而不是some_struct,但没有运气。我试着用:
int allocate(some_struct **arg)
它工作得很好(需以及改变分配功能),而是根据分配我可能不会改变的声明,它必须是* ARG。而这将是最正确的,如果我只需要声明some_struct s ..不是some_struct * s。 分配函数的目的是初始化一个struct(一个some_struct),它也包括分配它。
还有一件事我忘了提。分配函数中的返回0保留给一些状态消息,因此我不能使用这个返回地址。
'allocate'函数的真正目的是什么? – Earlz 2010-04-08 15:50:30
如果你必须传递一个'* some_struct',并在要分配的函数内分配内存,那么分配是不可能的。你能否发表更多的作业细节,大概你应该学习什么? – 2010-04-08 15:59:56
哦,当你发布更多的细节时,这里要做的正确的事情就是编辑你的问题来包含它们。你在这里似乎是新手,可能不知道礼仪。 – 2010-04-08 16:14:16