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無論如何感謝 –
也應該'免費'並檢查系統是否給你記憶。 –