gpt4 book ai didi

C++ 错误消息 : invalid pointer

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:51 24 4
gpt4 key购买 nike

我有一个函数可以将一个字符串附加到另一个字符串:

char* strjoin(char* str1,const char* str2) {
long len1 = strlen(str1);
long len2 = strlen(str2);
char* result = (char*)malloc(len1+len2+1);

memcpy(result,str1,len1+1);
memcpy(result+len1,str2,len2+1);

free(str1); <--------- program crashes here with error: invalid pointer
return result;
}

调用上面函数的代码是这样的:

char* str = "John";
str = strjoin(str,"\x20");
str = strjoin(str,"Doe");

在上面的函数 strjoin 中,我为新字符串分配了内存,所以我释放了旧的 str1。为什么str1是无效指针?

最佳答案

join 的第一次调用中,您将指向字符串文字的指针(它是只读的)传递给 free。你不应该调用 free 除非你已经分配了被释放的内存。

您可以使用 strdup 在调用方中修复此问题:

char* str = strdup("John");
str = strjoin(str,"\x20");
str = strjoin(str,"Doe");

关于C++ 错误消息 : invalid pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12084641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com