分配结构并在其中保存字符串

时间:2015-06-09 18:35:44

标签: c memory malloc

我在创建第一个E时遇到问题:

struct node {
    char * data;
    struct node * next;
};

struct node * createList(char * firstE){
  struct node *create;

  create = malloc(sizeof(struct node));
  create->data = malloc(sizeof(struct node));
  strcpy(create->data, firstE);
  create->next = NULL;
  return create;
}

我遇到create->data的内存分配问题。我试图让它保持FirstE的值,但我似乎无法得到它。

1 个答案:

答案 0 :(得分:2)

我必须猜测你的问题,因为没有结构定义。您的第二个malloc为与结构相同类型的字段分配内存。但是因为你使用strcpy来复制函数参数,我建议这行不正确,它会分配错误的内存量

create->data = malloc(sizeof(struct node));
strcpy(create->data, firstE);

由于您将字符串参数复制到此字段,我建议使用

create->data = malloc(1 + strlen(firstE));
strcpy(create->data, firstE);

1 +是允许字符串终止符。