我现在正在学习指针,我在函数中重新分配 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/