Table of Contents
메모리에 저장되는 데이터가 C 및 C++에서 효율적인 프로그래밍에 필수적입니다. 구조 및 조합은 메모리 레이아웃과 크기에 영향을 미치는 기본 데이터 유형입니다. 이 문서는 메모리가 이러한 데이터 유형에 할당되는 방법과 크기를 정확하게 계산하는 방법을 설명합니다.
구조의 메모리 레이아웃
C와 C++의 구조는 변수의 컬렉션이며, 다른 유형의 경우 단일 이름 아래 그룹화됩니다. 컴파일러는 각 회원을 순차적으로 배치하여 구조에 대한 메모리를 할당합니다.
구조의 총 크기는 해당 회원의 크기와 일치에 추가 된 모든 패딩의 합이다. 패딩은 각 회원이 크기 또는 정렬 요구 사항에 의해 디바이이블 주소에서 시작한다는 것을 보장합니다.
연합의 기억 배치
연합은 구조와 유사하지만 메모리 할당과 다릅니다. 연합의 모든 구성원은 가장 큰 회원의 크기와 동일, 동일한 메모리 공간을 공유합니다. 이것은 여러 데이터 유형이 동일한 메모리 위치를 차지할 수 있습니다.
조합의 크기는 가장 큰 회원에 의해 결정되며, 정렬을 위해 가능한 패딩. 다른 회원의 데이터에 영향을 미치는 한 회원에 대한 쓰기, 그래서 조합은 메모리 효율적인 데이터 공유에 사용됩니다.
데이터 크기 계산
구조와 조합의 크기를 계산하는 것은 개별 구성원의 크기를 요약하고 정렬을 위해 패딩을 고려하는 것입니다. sizeof] 연산자 C 및 C++ 바이트의 총 크기를 제공합니다.
예를 들어, 구조가 과 로 고려한다. 구조의 크기는 의 크기에 따라 달라진다, 의 크기, 그리고 정렬에 추가 패딩. 마찬가지로, 조합의 크기는 가장 큰 회원의 크기이다.
- 사용 sizeof 총 크기를 결정하기 위해.
- 각 회원의 정렬 요구 사항을 고려하십시오.
- 컴파일러에 추가된 패딩을 위한 계정.
- 모든 회원들 사이에서 기억을 공유하는 것을 기억하십시오.