正在重新分配的指针未在函数中分配 char* realloc

pointer being realloc'd was not allocated char* realloc in function

我现在正在学习指针,我在函数中重新分配 char* 时遇到了一些麻烦。 当我 运行 这段代码时,我有这个错误。 p.s。这段代码的唯一目标是理解指针是如何工作的。

void redefine(char** string) {
   *string = realloc(*string, 10 * sizeof(char));
   *string = "otherText";
}

int main(){
   char *first = malloc(5 * sizeof(char));
   first = "text";
   redefine(&first);
   return 0;
}

感谢转发

C 不使用赋值来复制字符串。

当你

first = "text";

first 现在指向文字字符串 text,它不再指向用 malloc() 分配的内存。所以你不能在那个指针上调用 realloc()

你应该使用:

strcpy(first, "text");

将 sdtring 复制到分配的内存中。

同样,在函数中你应该使用

strcpy(*string, "otherText");