realloc 麻烦

Realloc trouble

我有问题。 我有中风:“/hello/world” 我需要将单词 'hello' 复制到另一个字符串;

我有这个代码:

void copy(char *command) {// copy 
 char *word = NULL;
 int size = 1;
 if (*command == '/') {
    command++;
    while (*command != '/') {
         word = (char*)realloc(word, size * sizeof(char));
         *word = *command;
         size++;
         word++;
         command++;
     }
     printf("%s", word);
     free(word);
}

但我收到此错误:Segmentation fault (core dumped)

我做错了什么?

正如@kaylum 所说,您收到错误的原因是您更改了 word 指针的值。当您为已分配的内存块数组重新分配内存并更改该内存块的大小时,realloc() 会更改大小,returns 会更改指向该已分配数组的第一个内存块的指针。在这种情况下,如果您想更改 word 的内存大小,请尝试使用索引来访问新添加的内存块。

    void copy(char *command) {// copy
      char *word = NULL;
      printf("%s\n",command);
      int size = 1,index=0;``
      if (*command == '/') {
        command++;
        while (*command != '/') {
          word = (char*)realloc(word, size * sizeof(char));
          word[index] = *command;
          size++;
          command++;
          index++;
        }
        printf("%s\n", word);
        free(word);
      }
    }