> 백엔드 개발 > C++ > `std::array`는 일반 C 배열과 동일한 크기와 메모리 레이아웃을 보장합니까?

`std::array`는 일반 C 배열과 동일한 크기와 메모리 레이아웃을 보장합니까?

Susan Sarandon
풀어 주다: 2024-11-23 06:06:21
원래의
1081명이 탐색했습니다.

Does `std::array` Guarantee the Same Size and Memory Layout as a Regular C   Array?

std::array 크기 및 메모리 레이아웃에 대한 보장된 의미

C 11에서 std::array는 다음과 유사한 연속 스토리지 및 성능을 제공합니다. 일반 배열. 그러나 std::array에 대한 표준 요구 사항은 다음과 같은 질문을 제기합니다. 동등한 배열과 반드시 ​​동일한 크기와 메모리 레이아웃을 가져야 합니까?

C 표준의 §23.3.2.1/2에 따르면 std: :array는 초기화 목록을 사용하여 초기화된 집계입니다. 집계는 생성자를 사용하여 데이터를 변환할 수 없으므로 초기화 목록은 배열에 저장된 값을 직접 나타내야 합니다.

이는 std::array의 크기가 해당 항목에 지정된 요소 수에 따라 결정되어야 함을 의미합니다. 템플릿 인수. 또한 메모리 레이아웃은 보조 데이터나 패딩 없이 배열의 레이아웃과 동일해야 합니다.

표준에서는 이 요구 사항을 명시적으로 언급하지 않지만 std::array의 집계 특성에 의해 강력하게 암시됩니다. 그리고 연속 저장에 대한 명령입니다.

이는 sizeof(std::array)가 실제로 sizeof(int)와 같아야 함을 의미합니다. * N, 원래 문의에 제공된 예제가 의도한 대로 작동하는지 확인합니다.

실제로 컴파일러와 구현은 일반적으로 이러한 예상 동작을 준수합니다. 그러나 표준에서는 이를 엄격하게 시행하지 않으므로 비준수 구현 가능성이 열려 있다는 점에 유의하는 것이 중요합니다.

위 내용은 `std::array`는 일반 C 배열과 동일한 크기와 메모리 레이아웃을 보장합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿