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
▲ top