2
当我遇到一个我无法弄清的问题时,我只是在玩C。为struct“error”分配内存
我有一个结构,可以说
typedef struct Node
{
void * data;
int id;
}Node;
而且我的程序看起来像
void Node_Init(Node *node)
{
node = malloc(sizeof(Node));
node->id = 5;
}
int main()
{
Node *node;
Node_Init(node);
printf("ID %d", node->id);
}
当我运行这段代码和节点 - > ID获取印刷我得到一个随机数?这就像node-> id被分配到堆栈而不是堆?
因为当我做Node *节点;如果我做Node *node = malloc(sizeof(Node));
它的作品,但如果我没记错,它不需要这样做。任何人都可以帮我解释为什么发生这种情况?
'* node-> id = 5;' - >'(* node) - > id = 5;''和'print f(“ID%d”,* node-> id);' - >'printf(“ID%d”,node-> id);' – BLUEPIXY
注意到它mysellf无论如何感谢 –
也应该'免费'并检查系统是否给你记忆。 –