C 11에서 std::string의 COW 구현: 적법성과 제한
COW(기록 중 복사)는 종종 사용되는 기술입니다. 실제로 수정될 때까지 새 객체 생성 비용을 연기하여 성능을 향상시키는 데 사용됩니다. 그러나 COW가 C 11에서 std::string을 구현하는 데 유효한 접근 방식인지 의문이 제기되었습니다.
COW 구현에 대한 제한
C 11 표준에 따르면 (21.4.1 p6), 반복자와 참조의 무효화는 특정 경우에만 허용됩니다. 상황:
COW 문자열 구현의 경우 다음을 호출합니다. const가 아닌 연산자[]는 복사본을 만들고 참조를 무효화해야 합니다. 이는 앞서 언급한 단락에 의해 금지됩니다. 결과적으로 COW를 기반으로 std::string을 구현하는 것은 더 이상 C 11에서 합법적인 것으로 간주되지 않습니다.
명시적 제한 설명
표준에서는 다음을 명시적으로 명시하지 않습니다. COW 기반 std::string 구현은 금지됩니다. 그러나 무효화 시나리오를 명시적으로 제한하는 요구 사항의 조합으로 인해 제한이 암시됩니다.
결론
이전 버전에서는 COW가 std::string에 대해 실행 가능한 구현이었지만 C의 C 11 사양에는 참조 무효화가 허용되지 않아 COW 기반 구현을 금지하는 제약 조건이 도입되었습니다.
위 내용은 C 11에서 `std::string`의 쓰기 시 복사 구현이 합법적인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!