내가 다른 문자열에 문자열을 추가하는 기능이 있습니다C++ 오류 메시지 : 잘못된 포인터
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이 유효하지 않은 포인터입니까?
당신은 할 수없는'free' 뭔가를. 또한 이것은 기본적으로 C 코드이므로 C++ 기능을 사용해야합니다. – GManNickG
'char * str = "John";'컴파일러는 여기서 비추천적인 변환에 대해 경고해야합니다. 경고를 무시하지 마십시오! – Praetorian