std :: strstream이 더 이상 사용되지 않는 이유는 무엇입니까?
나는 최근 std::strstream에 std::stringstream. 사용 해본 지 오래되었지만 당시에해야 할 일을했기 때문에 지원 중단 소식을 듣고 놀랐습니다.
내 질문은 왜이 결정이 내려 졌는지, 그리고 std::stringstream결석 한 혜택은 무엇 std::strstream입니까?
는 strstream반환 char *데도 그것을 할당했다 방법을 언급했다 없기 때문에 관리하기가 매우 어렵다고합니다. 따라서 그것을 삭제해야하는지, 아니면 free ()를 호출해야하는지 아니면 완전히 다른 일을해야하는지 알 수 없었습니다. 할당을 해제하는 유일한 방법 strstream은 freeze()함수 를 통해 다시 전달하는 것입니다. 이것은 충분히 명확하지 않았고 많은 사람들이 잘못했습니다. stringstream반환 훨씬 덜 오류가 발생하기 쉬운 그 자체를 관리하는 문자열 객체.
ends문자열을 종료 하기 위해 사용해야하는 문제도 있었지만 할당 해제 문제가 지원 중단의 주요 원인이라고 생각합니다.
메모리 관리를 더 쉽게 이해할 수 있습니다. (누군가 할당 된 메모리를 해제하고 어떤 조건에서 책임이 있는지 기억할 수 있습니까?)
(strstream은 여전히 다른 곳에서 사용할 수없는 것을 제공하기 때문에 C ++ 0X에 계속 존재할 것입니다-적어도 마지막으로 초안을 확인했을 때).
A strstream는 char *. A std::stringstream는 std::string. 나는 자동으로 방지 strstream하는 버퍼 오버플로의 가능성 때문에 s가 더 이상 사용되지 않는다고 가정 std::string합니다.
한 번 이상 개인적인 관점에서 추적하는 데 며칠 또는 몇 주가 걸리고 결국 .NET을 사용하는 모호한 메모리 손상을 보았습니다 strstream. stringstream부패 로 대체 되 자마자 사라졌고 더 이상 질문하지 않았습니다! 그 정도면 충분했습니다.
참고 URL : https://stackoverflow.com/questions/2820221/why-was-stdstrstream-deprecated
'Program Club' 카테고리의 다른 글
| Vertex 및 Pixel 쉐이더 란 무엇입니까? (0) | 2020.11.04 |
|---|---|
| bash 스크립트가 계속 실행되는 동안 출력을 파일로 강제 플러시 (0) | 2020.11.04 |
| 저장 프로 시저에 선택적 OUTPUT 매개 변수를 사용할 수 있습니까? (0) | 2020.11.04 |
| 쉘 스크립팅에서 예외 처리? (0) | 2020.11.04 |
| JavaScript를 사용하여 HTML에서 자식 노드를 제거하려면 어떻게해야합니까? (0) | 2020.11.03 |