보호글
20140409데세랄 산기념
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력해주세요.
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) 선언했을때
20140411 구조체 (0) | 2014.04.11 |
---|---|
20140410 구조체 변수와 포인터 (0) | 2014.04.10 |
20140408 구조체 (0) | 2014.04.08 |
20140307 입출력함수 (0) | 2014.04.07 |
20140304 표준 입출력과 버퍼 (0) | 2014.04.04 |
WinAVR설치
구글에서 winavr검색 다운로드하면
WinAVR20100110을 받을수 있다. 받아라 커스텀설치에서 3가지 항목나오는데 3가지 다 받아두자.
20140425 (0) | 2014.04.25 |
---|---|
20140424 USART (0) | 2014.04.24 |
20144022 문자열 숫자, 출력하기 (0) | 2014.04.22 |
20140421 LCD2 (0) | 2014.04.21 |
20140417 LCD (0) | 2014.04.17 |
RECENT COMMENT