std::array 크기 및 메모리 레이아웃에 대한 보장된 의미
C 11에서 std::array는 다음과 유사한 연속 스토리지 및 성능을 제공합니다. 일반 배열. 그러나 std::array에 대한 표준 요구 사항은 다음과 같은 질문을 제기합니다. 동등한 배열과 반드시 동일한 크기와 메모리 레이아웃을 가져야 합니까?
C 표준의 §23.3.2.1/2에 따르면 std: :array는 초기화 목록을 사용하여 초기화된 집계입니다. 집계는 생성자를 사용하여 데이터를 변환할 수 없으므로 초기화 목록은 배열에 저장된 값을 직접 나타내야 합니다.
이는 std::array의 크기가 해당 항목에 지정된 요소 수에 따라 결정되어야 함을 의미합니다. 템플릿 인수. 또한 메모리 레이아웃은 보조 데이터나 패딩 없이 배열의 레이아웃과 동일해야 합니다.
표준에서는 이 요구 사항을 명시적으로 언급하지 않지만 std::array의 집계 특성에 의해 강력하게 암시됩니다. 그리고 연속 저장에 대한 명령입니다.
이는 sizeof(std::array
실제로 컴파일러와 구현은 일반적으로 이러한 예상 동작을 준수합니다. 그러나 표준에서는 이를 엄격하게 시행하지 않으므로 비준수 구현 가능성이 열려 있다는 점에 유의하는 것이 중요합니다.
위 내용은 `std::array`는 일반 C 배열과 동일한 크기와 메모리 레이아웃을 보장합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!