구조체 얼라인먼트 설정
코드의 일부 부분적으로 적용 하려는 경우엔 , 아래처럼 #pragma 구문 적용한다.
#pragam pack(push,얼라인 바이트 사이즈) // 1,2,4,8.16 중 택1.
// 이 구간에 선언된 모든 구조체에 얼라인 바이트 수 적용됨.
#pragam pack(pop)
// 이것 이후는 프로젝트 설정에서 지정된 값이 적용됨.
Visual C++ 프로젝트 속성창(아래그림)에서 설정가능하며, 통상 Default 로 되어있다.
Visual Studio 에서 구조체 얼라인먼트 default 값
- 위 속성창에 보면 Defalt 가 의미하는게 단일하지 않으며 프로젝트에 적용된 플랫폼에 따라 다른 값이 적용된다.
- 프로젝트가 x64 플랫폼인 경우 구조체 얼라인먼트 default 값 : 16바이트
- 프로젝트가 x86, ARM, ARM64 인 경우 구조체 얼라인먼트 default 값 : 8바이트.
Visual C++ 에서 얼라인먼트 적용시 메모리 배치.
구조체 멤버중 얼라인먼트 바이트 수보다 작은 변수들은 해당변수 시작번지이후 얼라인먼트 바이트에서 지정한 수만큼 "추가"의 메모리가 할당된다. 예. 구조체 멤버중 1바이트 uint8_t 변수가 있는 것에 8바이트 얼라인먼트 적용했다면 아래 처럼 더미 총 7바이트 추가의 메모리 할당됨.
uint8_t | 더미 | 더미 | 더미 | 더미 | 더미 | 더미 | 더미 |
연관
첫 등록 : 2020.10.05
최종 수정 :
단축 주소 : https://igotit.tistory.com/2638
'VisualStudio.C++.C#' 카테고리의 다른 글
Visual Studio 2017. 설치. (0) | 2021.01.22 |
---|---|
Visual C++. C++ REST SDK. OpenSSL. libCurl 설치하기. - 쉽게. (0) | 2020.10.27 |
VC++2019. MFC Class From ActiveX Control.. 기능 제거됨. (0) | 2020.09.18 |
Visual C++. 사용자 정의 매크로 만들기. Include Directories, Library Directories (0) | 2020.09.15 |
Visual C++ 64bit, 32bit 프로젝트 개발 환경 셋팅. (0) | 2020.09.14 |
댓글