std::array의 크기 및 메모리 레이아웃이 배열과 동일합니까?
표준 정의 std::array에도 불구하고 연속된 배열 스토리지와 성능은 일반 어레이와 비슷하지만 정확한 크기와 메모리와 관련하여 모호할 여지가 있습니다. 레이아웃.
표준 요구 사항
표준의 섹션 23.3.2.1/2에서는 배열이 변환 가능한 최대 N개 요소를 포함하는 초기화 목록으로 초기화된 집계라고 명시합니다. T. 이는 std::array가 보조 항목을 제외하고 값 자체를 저장해야 함을 의미합니다. data.
잠재적 변형
그러나 표준에서는 std::array가 내장 배열과 동일한 크기 및 메모리 레이아웃을 갖는다고 명시적으로 보장하지 않습니다. 이론적으로 컴파일러는 지정된 데이터 뒤에 추가 보조 데이터를 저장하거나 다른 패딩 또는 정렬 규칙을 적용할 수 있습니다.
수퍼 정렬 고려 사항
내장 배열은 수퍼 정렬을 지원할 수 없습니다. -인텔의 SSE 지침에 대한 데이터와 같은 정렬 요구 사항. std::array의 사양은 상위 정렬을 허용할 수 있지만 명시적으로 보장되지는 않습니다.
구현별 의미
결론: 표준의 요구 사항이 명확하게 적용되지는 않습니다. std::array는 내장 배열과 동일한 크기와 메모리 레이아웃을 가져야 합니다. 문서에서는 메모리 효율성이 동일해야 한다고 제안하지만 여전히 구현에 따라 다릅니다. 따라서 크기와 메모리 레이아웃이 동일하다는 가정을 믿을 수 없습니다.
위 내용은 `std::array`는 내장 배열과 동일한 크기와 메모리 레이아웃을 갖나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!