20140409데세랄 산기념

2014. 4. 9. 21:59

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력해주세요.

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) 선언했을때


'C언어' 카테고리의 다른 글

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
by 날라차숑 2014. 4. 9. 17:08

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
by 날라차숑 2014. 4. 9. 12:33