C++错误消息:指针无效
C++ error message: invalid pointer
我有一个函数可以将一个字符串附加到另一个字符串:
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++ 中传递字符串时指针无效
- free():仅在一种情况下指针无效
- free():实现矢量擦除()时的指针无效
- free():添加字符串时指针无效
- C++ ecliipse free():函数末尾的指针无效
- C++ 指针无效函数问题
- 将 boost::object_pool 与矢量一起使用时指针无效
- free():矢量 C++ 的指针无效<vec4i>
- omnet++free():指针无效,错误134/139
- 在OpenCV中调用stereoRectify会导致异常:帧指针无效
- 销毁和重新创建一个对象会使指向该对象的所有指针无效吗
- 用户定义类中的Null指针无效
- 删除指向类的指针无效
- 运行GTest时指针无效
- C++错误消息:指针无效
- 可以std::string reconfiguration使指向堆的指针无效
- 为什么删除指向指针向量的指针会导致指针无效
- MPI_scatter:缓冲区指针无效
- mmap 错误:分段错误/指针无效错误
- 返回 std::string 时指针无效(libc 如此说)