음, p
은 0 끝나는 문자열을 가리 키지 않습니다 get_string()
반환 NULL 경우; 그 문제는 여기에 있습니다. 0- 종료 C 문자열에 대한 포인터를 가져 오는 std::string
생성자가 NULL을 처리 할 수 없기 때문에 NULL은 바나나가 수십개 인 것처럼 0으로 끝나는 C 문자열입니다. get_string()
은 라이브러리 함수와 반대로 자신의 함수 인 경우
그래서, 어쩌면 당신은 NULL을 반환 할 수 있는지 확인해야합니다. 예를 들어 자신이 소유 한 상태임을 알기 때문에 찾은 것을 std::string
자체로 돌려 보낼 수 있습니다. 그렇지 않으면, 나는 (댓글에 마틴 뉴욕에 의해 제안) p
누설 할 수 있음을 보장하기 위해 도우미로 this answer에서 Cleanup
를 사용하여이 작업을 수행 할 것 :
string foo()
{
const char* p = get_string();
const Cleanup cleanup(p);
const std::string str(p != NULL ? p : "");
return str;
}
, 네 것을 제외하고 우리가 일반적으로 부스트를 사용하지 않는,하지만 나는 이러한 클래스 나 자신을 만들 수 있습니다. 감사합니다 –
그 예입니다. – Allbite