Post
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <iostream> using namespace std; struct Player { char name; int level; short wClass; }; #pragma pack(1) struct Player2 { char name; int level; short wClass; }; void main() { Player player; Player2 player2; printf("name:%d level:%d class:%d AllSize:%d \n", sizeof(player.name), sizeof(player.level), sizeof(player.wClass), sizeof(player)); printf("name:%d level:%d class:%d AllSize:%d \n", sizeof(player2.name), sizeof(player2.level), sizeof(player2.wClass), sizeof(player2)); getchar(); } | cs |
구조체 패딩은....
32비트 운영체제일 때는 4byte, 64비트 운영체제일 때는 8byte를 읽어온다.
그래서 빈공간이 있을 땐 딱 4byte, 8byte에 맞아 떨어지도록 구조체 패딩을한다.
그래서 Player의 사이즈는 7이 아니라 12이다. char도 4byte로 wClass도 4byte로 치환한다.
이것을 방지하기 위해선 pragma pack을 사용해 Player2 클래스처럼 만들어주면 된다.
'이전게시판 > C, C++' 카테고리의 다른 글
CRT 메모리 누수 체크 (0) | 2016.04.15 |
---|---|
C++ 다중상속 문제점? (0) | 2016.04.04 |
C++ 데드락(DeadLock) (0) | 2016.04.04 |
2의 보수 만드는 법 (0) | 2016.04.01 |
C++ 스택(Stack) 예제 (0) | 2016.03.20 |
C++ 간단한 원형 큐 (0) | 2016.03.20 |
c++ 링크드리스트 만들기 (0) | 2016.03.19 |
C++ 문자열 뒤집기, 한글 뒤집기 (0) | 2016.03.18 |