正在重新分配的指针未在函数

时间:2018-01-29 23:00:37

标签: c arrays pointers realloc

我现在正在学习指针,我在功能中重新分配char *时遇到了一些麻烦。 当我运行此代码时,我有这个错误。 附:这个代码的唯一目标是了解指针是如何工作的。

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;
}

感谢前进

1 个答案:

答案 0 :(得分:4)

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

当你这样做时

JSON

first = "text"; 现在指向文字字符串first,它不再指向使用text分配的内存。因此,您无法在该指针上调用malloc()

您应该使用:

realloc()

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

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

strcpy(first, "text");