struct smart1
{
int A; //4
int B; //8
char C; //12
char D; //12
char E; //12
short F; //16
char G; //16
int H; //20
char I; //24
short J; //24
char K; //28
};
int main()
{
printf("%d \n", sizeof(struct smart));
return 0;
}
이렇게 선언하면 28byte가 나온다. 이러한 아래의 메모리 구조 때문에
- 4바이트 -
변수 선언을 지맘대로 했을때
A(int) |
B(int) |
C(char) |
D(char) |
E(char) |
|
F(short) |
G(char) |
|
H(int) |
I (char) |
|
J(short) |
K(char) |
|
|
|
|
|
|
|
(초록색은 메모리가 빈공간이다.)
변수선언을 메모리 공간에 맞춰서 했을때
A(int) |
B(int) |
F(short) | J(short) |
C(char) | D(char) | E(char) | G(char) |
H(int) |
I(char) | K(char) |
| |
| | | |
| | | |
24바이트가 나온다.
여기서 전처리어 #pragma pack(1)에서 부터 #pragma pack(4)로 묶어버린다면 22바이트가 나온다.
이것이 가장 속도 용량면에서 가장 좋은 효율을 보인다.
메모리로 확인해보자.
#pragma pack(1) 선언하지 않았을때
#pragma pack(1) 선언했을때
RECENT COMMENT