c - 分配一个结构并在其中保存一个字符串

标签 c memory malloc

我在获取 create 以在此处保留 firstE 时遇到问题:

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 的值,但我似乎无法得到它。

最佳答案

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

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

由于您将字符串参数复制到该字段,因此我建议这样做

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

1 + 允许字符串终止符。

关于c - 分配一个结构并在其中保存一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30740122/

相关文章:

c - 释放字符指针数组(字符串文字)?

c - 从二进制文件中逐行打印序列

c - Strdup 正在生成核心转储吗?

c - 如何在 Linux 内核中生成 "artificial"中断?

c++ - 多精度库 zkcm 和 sizeof()

Java:OutOfMemoryError 异常和 freeMemory()

c++ - Windows 应用程序的堆大小

c# - 无法将 uchar ptr 转换为 opencvsharp

c++ - 如何用C++编写控制台终端

c - 段错误 : Using strtok, 系统调用。 C语言编程