이 함수는 스트림과 관련된 스트림 버퍼를 변경하는데 사용될 수있다rdbuf (...)는 가리키는 버퍼를 소유 한 포인터를 반환합니다?
streambuf* std::basic_ios::rdbuf (streambuf* sb);
STL <ios>
라이브러리 함수에게있다. 이것을 사용하면 이전에 사용하던 streambuf에 대한 포인터를 반환합니다. 누가 포인터를 소유하고 있는지 또는 포인터의 수명이 누구인지는 분명하지 않습니다. 표준 (27.5.5.3/5)은 간단히 말해서
을 반환합니다. 이전 값은
rdbuf()
입니다.
매우 유익하지 않습니다. 이 포인터의 유효 기간에 대한 보장이 있습니까? 포인터를 호출하면 코드 delete
을 처리해야합니까?
감사합니다. 어딘가에서 표준에 명시된 동작입니까? – Mohan
명시 적으로. rdbuf()가 리턴 한 버퍼의 소유자가 지정되지 않았습니다. 분명히 발신자가 소유하지 않으면 삭제할 수 없습니다. –
또한 중요 : 버퍼를 설치하고 그것을 'new'로 할당 한 경우에도 스트림이 끝날 때까지 '삭제'하지 마십시오. – MSalters