我现在正在学习指针,我在功能中重新分配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;
}
感谢前进
答案 0 :(得分:4)
C不会使用赋值来复制字符串。
当你这样做时
JSON
first = "text";
现在指向文字字符串first
,它不再指向使用text
分配的内存。因此,您无法在该指针上调用malloc()
。
您应该使用:
realloc()
将sdtring复制到已分配的内存中。
同样,在函数中你应该使用
strcpy(first, "text");