将void void *指针从函数返回到其他函数参数

时间:2011-12-17 10:39:28

标签: c list generics pointers void

我正在尝试构建一个处理Element的通用列表 程序中的每个对象(指向struct的指针)都应使用此列表

这是void *的定义,从现在开始就是它的元素。 和添加函数签名:

typedef void* Element;
void AddElementToList(List thisList , Element toAdd);

以及创建用户功能和用户定义:

typedef struct FacebookUser_t* User;
User CreateUser(char* const lineToSplit);

这就是我如何称呼这个功能:

AddElementToList(thisServer->UsersList , (Element)CreateUser(line));

在调试创建用户函数时执行的操作和分配给它的值,在它返回之后,它似乎变为空,然后在add元素处它被粉碎。 这是回报:

return toAdd;

'toAdd'是用户类型。 我做错了什么?

1 个答案:

答案 0 :(得分:1)

没有更多信息很难说,但你需要注意对象范围: - 你的CreateUser函数必须使用FacebookUser_t或类似的东西为堆上的malloc对象分配内存,返回指向它的指针(类型User;这就是为什么@OliCharlesworth警告隐藏在typedef后面的指针:User不是用户对象,并且不分配内存)。

你的最后一行暗示了另一个可能的问题。您指出toAdd是函数AddElementToList的参数,然后您谈到返回'toAdd',但该函数的类型为'void'。恕我直言,这里有些令人困惑,您可能想要查看这些部分。