正在重新分配的指针未在函数中分配 char* realloc
pointer being realloc'd was not allocated char* realloc in function
我现在正在学习指针,我在函数中重新分配 char* 时遇到了一些麻烦。
当我 运行 这段代码时,我有这个错误。
p.s。这段代码的唯一目标是理解指针是如何工作的。
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");
我现在正在学习指针,我在函数中重新分配 char* 时遇到了一些麻烦。 当我 运行 这段代码时,我有这个错误。 p.s。这段代码的唯一目标是理解指针是如何工作的。
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");