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

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

感谢转发

最佳答案

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

当你这样做的时候

first = "text";

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

你应该使用:

strcpy(first, "text");

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

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

strcpy(*string, "otherText");

关于c - 正在重新分配的指针未在函数中分配 char* realloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48511417/

相关文章:

c++ - new不分配内存?

c++ - 什么是类型安全以及 "type safe"替代方案是什么?

c - C 中的动态结构数组

c - 函数溢出错误

C程序文件-io用户输入

java - 合并循环中的冗余信息

javascript - 未捕获的类型错误 : UnitType is not a constructor

java - 传递参数使指针来自整数,而不需要从 printf 进行强制转换调用

javascript - 使用 Javascript SDK 在 Facebook 上上传 ByteArray 图像

c - 如何为 char** str 设置空值