首页 > 解决方案 > 将 char 数组传递给另一个函数时,Realloc 返回无效指针

问题描述

我有一个简短的片段,我将一个 char 数组传递给另一个函数并更改内存大小。

// in main
char *str = argv[1];
find(&str);

void func(char **str){
  // some code
  *str = realloc(*str, 10+1);
}

这给出了错误

realloc(): invalid pointer
Aborted (core dumped)

我在这里做错了什么?为了改变str另一个函数中的值,我使用了一个双指针。

标签: cpointersrealloc

解决方案


我在这里做错了什么?

*strinrealloc(*str, 10+1)未被此进程分配。@Barmar

您的代码可以使用下面的或等效的来分配自己的副本,以便以后重新分配。从strdup()C17 开始,C STL 中没有,示例实现

char *str = strdup(argv[1]);

推荐阅读