Program Club

std :: strstream이 더 이상 사용되지 않는 이유는 무엇입니까?

proclub 2020. 11. 4. 20:58
반응형

std :: strstream이 더 이상 사용되지 않는 이유는 무엇입니까?


나는 최근 std::strstreamstd::stringstream. 사용 해본 지 오래되었지만 당시에해야 할 일을했기 때문에 지원 중단 소식을 듣고 놀랐습니다.

내 질문은 왜이 결정이 내려 졌는지, 그리고 std::stringstream결석 한 혜택은 무엇 std::strstream입니까?


strstream반환 char *데도 그것을 할당했다 방법을 언급했다 없기 때문에 관리하기가 매우 어렵다고합니다. 따라서 그것을 삭제해야하는지, 아니면 free ()를 호출해야하는지 아니면 완전히 다른 일을해야하는지 알 수 없었습니다. 할당을 해제하는 유일한 방법 strstreamfreeze()함수 를 통해 다시 전달하는 것입니다. 이것은 충분히 명확하지 않았고 많은 사람들이 잘못했습니다. stringstream반환 훨씬 덜 오류가 발생하기 쉬운 그 자체를 관리하는 문자열 객체.

ends문자열을 종료 하기 위해 사용해야하는 문제도 있었지만 할당 해제 문제가 지원 중단의 주요 원인이라고 생각합니다.


메모리 관리를 더 쉽게 이해할 수 있습니다. (누군가 할당 된 메모리를 해제하고 어떤 조건에서 책임이 있는지 기억할 수 있습니까?)

(strstream은 여전히 ​​다른 곳에서 사용할 수없는 것을 제공하기 때문에 C ++ 0X에 계속 존재할 것입니다-적어도 마지막으로 초안을 확인했을 때).


A strstreamchar *. A std::stringstreamstd::string. 나는 자동으로 방지 strstream하는 버퍼 오버플로의 가능성 때문에 s가 더 이상 사용되지 않는다고 가정 std::string합니다.


한 번 이상 개인적인 관점에서 추적하는 데 며칠 또는 몇 주가 걸리고 결국 .NET을 사용하는 모호한 메모리 손상을 보았습니다 strstream. stringstream부패 로 대체 되 자마자 사라졌고 더 이상 질문하지 않았습니다! 그 정도면 충분했습니다.

참고 URL : https://stackoverflow.com/questions/2820221/why-was-stdstrstream-deprecated

반응형