char str1[3] = {0,};
char* str2 = "World";
char* str3 = new char[3];
memset(str3, 0, sizeof(char)* 3);
strcpy(str1, str2);
strcpy(str3, str1);
cout << str1 << ", " << str3 << endl;
getchar();
delete[] str3;
표준 문자열 함수를 재정의해 보던 중, 묘한 걸 발견했습니다. 바로 위와 같은 짧은 코드 때문이었는데요.
strcpy로 str1과 str3 모두 str2의 "World" 문자열이 복사됨은 물론 출력까지 되더군요. 의외의 결과에 당황하고 말았습니다.
물론 오류 메시지는 떴습니다. str1과 str2의 복사에 대한 오류 메시지 역시 짐작이 가고요. 하지만 str3을 delete하려고 했을 때 오류가 뜨는 건 무슨 영문인지 모르겠네요.