VisualStudio.C++.C#2020. 10. 5. 21:04

구조체 얼라인먼트 설정 

코드의 일부 부분적으로 적용 하려는 경우엔 , 아래처럼 #pragma 구문 적용한다. 

 

#pragam pack(pusj,얼라인 바이트 사이즈) // 1,2,4,8.16 중 택1. 

// 이 구간에 선언된 모든 구조체에 얼라인 바이트 수 적용됨.

#pragam pack(pop) 

// 이것 이후는 프로젝트 설정에서 지정된 값이 적용됨. 

 

 

Visual C++ 프로젝트 속성창(아래그림)에서 설정가능하며,  통상 Default 로 되어있다. 

 

 

 

Visual Studio 에서 구조체 얼라인먼트 default 값

- 위 속성창에 보면 Defalt 가 의미하는게 단일하지 않으며 프로젝트에 적용된  플랫폼에 따라 다른 값이 적용된다.

- 프로젝트가 x64 플랫폼인 경우 구조체 얼라인먼트 default 값  : 16바이트

- 프로젝트가 x86, ARM, ARM64 인 경우 구조체 얼라인먼트 default 값 : 8바이트. 

 

from : docs.microsoft.com/en-us/cpp/build/reference/zp-struct-member-alignment?redirectedfrom=MSDN&view=vs-2019

 

 

 

Visual C++ 에서 얼라인먼트 적용시 메모리 배치. 

구조체 멤버중 얼라인먼트 바이트 수보다 작은 변수들은 해당변수 시작번지이후 얼라인먼트 바이트에서 지정한 수만큼 "추가"의 메모리가 할당된다. 예. 구조체 멤버중 1바이트 uint8_t 변수가 있는 것에 8바이트 얼라인먼트 적용했다면 아래 처럼 더미 총 7바이트 추가의 메모리 할당됨.  

 

uint8_t 더미 더미 더미 더미 더미 더미 더미

 

 

 

 

 

연관 

 

MQL5. struct. 구조체, DLL 함수인자에 구조체 전달 방법

MQL5 구조체 타입선언. // MQL5 에서구조체 선언형식. struct ST_DATA { double V1; ... }; // 즉 아래와 같은 형식은 MQL5 에서는 지원안됨. typedef struct __st_data { double V1; ... }ST_DATA, *PST_DATA; MQ..

igotit.tistory.com

 


첫 등록 : 2020.10.05

최종 수정 : 

단축 주소 : https://igotit.tistory.com/2638

 


 

 

 

 

Posted by 리치굿맨

댓글을 달아 주세요