std::ostrstream:: freeze
|
void
freeze
(
bool
flag
=
true
)
;
|
(C++98에서 사용 중단됨)
(C++26에서 제거됨) |
|
스트림이 출력을 위해 동적으로 할당된 배열을 사용하는 경우, 자동 버퍼 할당/해제를 비활성화( flag == true )하거나 활성화( flag == false )합니다. 효과적으로 rdbuf ( ) - > freeze ( flag ) 를 호출합니다.
목차 |
참고 사항
str() 호출 후에는 동적 스트림이 자동으로 고정됩니다. 이 ostrstream 객체가 생성된 범위를 벗어나기 전에 freeze ( false ) 호출이 필요하며, 그렇지 않으면 소멸자에서 메모리 누수가 발생합니다. 또한 고정된 스트림에 추가 출력이 발생하면 할당된 버퍼의 끝에 도달한 시점에서 출력이 잘릴 수 있습니다.
매개변수
| flag | - | desired status |
반환값
(없음)
예제
#include <iostream> #include <strstream> int main() { std::ostrstream dyn; // 동적으로 할당된 출력 버퍼 dyn << "Test: " << 1.23; // 참고: std::ends 없이 추가 동작을 보여줌 std::cout << "The output stream contains \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; // str() 호출로 인해 스트림이 이제 고정됨 dyn << " More text"; // 고정된 스트림에 대한 출력은 잘릴 수 있음 std::cout << "The output stream contains \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; dyn.freeze(false); // freeze(false)를 호출해야 하지 않으면 소멸자에서 메모리 누수가 발생함 std::ostrstream dyn2; // 동적으로 할당된 출력 버퍼 dyn2 << "Test: " << 1.23; // 참고: std::ends 없음 std::cout << "The output stream contains \""; std::cout.write(dyn2.str(), dyn2.pcount()) << "\"\n"; dyn2.freeze(false); // str() 호출 후 스트림 고정 해제 dyn2 << " More text" << std::ends; // 출력이 잘리지 않음 (버퍼가 증가함) std::cout << "The output stream contains \"" << dyn2.str() << "\"\n"; dyn2.freeze(false); // freeze(false)를 호출해야 하지 않으면 소멸자에서 메모리 누수가 발생함 }
가능한 출력:
The output stream contains "Test: 1.23" The output stream contains "Test: 1.23 More " The output stream contains "Test: 1.23" The output stream contains "Test: 1.23 More text"
참고 항목
|
버퍼의 고정 상태를 설정/해제합니다
(
std::strstreambuf
의 public member function)
|