指针的分配无效

时间:2014-10-18 15:15:31

标签: c pointers

#include <stdio.h>
#include <stdlib.h>


typedef struct node
  {
  int data;
  struct node * next;
  } node;

  int main()
  {
      node * head;
      head->data=5; //crash
  }

我不明白为什么这样的事情会崩溃?我一直在使用指针几个月,但最简单的例子似乎让我感到难过。

2 个答案:

答案 0 :(得分:4)

扩展 juanchopanza 在评论中所说的内容:
您的node * head;创建了一个指针,但它没有指向任何有效的node结构。 您首先需要使用malloc为其分配空间,例如:

node * head = malloc(sizeof(node));

在程序结束时也不要忘记free,以免造成内存泄漏:

free(head);

答案 1 :(得分:1)

你没有写任何东西。

 node *head = (node*)malloc(sizeof(node));

你最好正确检查malloc返回并确保你在完成后自由发挥