멀쩡한 std::string에서 std::length_error 예외가 발생하면?

오늘 멀쩡하게 돌아가던 코드에서 std::length_error 예외가 발생해서 원인을 알아보았습니다.

std::length_error는 vector, string에서 발생하는 예외이고 string의 경우 std::string::max_size() 보다 큰 문자열을 할당하려고 했을 때 발생한다고 합니다.

디버그를 해보니 멀쩡한 string객체를 string::operator = 에 넘기는데 파라메터로 넘기기 전의 string객체를 보면 정상이고 파라메터로 넘어온 string 객체는 쓰레기 값으로 채워져 있었습니다.

해결방법은 프로젝트를 Cleanup 하고 다시 빌드하면 됩니다.

string 이 포함된 obj가 어떠한 이유로 빌드가 제대로 되지 않을 때 발생하는 문제였습니다. 일부 obj는 최신이고 일부 obj는 예전 버전으로 빌드된 상태에서 link가 이루어지고 실행이 되면 이런 이상한 상태가 되어 버립니다. 이런 문제로 시간을 버리다니... ㅠㅠ

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다