- - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- - 먼저 유사한 질문이 있었는지 검색해보세요.
- - 서로 예의를 지키며 존중하는 문화를 만들어가요.
- - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
struct Padding
{
char a; //1
long long b; //8
short c; //2
int d; //4
char e; //1
long long f; //8
char g; //1
};
디폴트 패킹 값으로 설정되어있고
32bit 환경과 64bit 환경에서 둘다 테스트해봤습니다.
처음에 디폴트 패킹값이 8이라고 알고있어서
8byte 단위로 끊어서
c , d , e 변수가 하나의 8byte 단위로 들어갈거라고 생각해서 sizeof(Padding)이 40byte라고 생각했는데
결과는 48byte가 나왔습니다
그래서 메모리 뷰를 확인해 본 결과
0x000000837FB1F948 03 00 cc cc ..??
0x000000837FB1F94C 04 00 00 00 ....
0x000000837FB1F950 05 cc cc cc .???
0x000000837FB1F954 cc cc cc cc ????
short c 랑 int d가 8byte 차지하고
char e 혼자 8byte를 차지하더라고요
왜 굳이 8byte단위로 처리 가능한데
short c / int d / char e 를 하나의 8byte로 처리하지 않고 오히려 4byte씩 끊어서 처리하는 느낌이 들었는데
이런 현상에 대해서 궁금합니다