Chapter 13. 구조체

1.  typedef 를 사용해서 간편하게 선언을 하도록 하자.

 

2. 구조체는 선언을 하고 반드시 초기화를 하고 사용한다.

 

3. 구조체 포인터에 메모리를 할당해 줄 경우  구조체 내의 메모리 할당 된 부분 부터 해제를 하고

 구조체 포인터의 메모리를 할당한다.

 

4. 구조체를 패킹한다!! 
  1. typedef struct NODE
    1. unsigned char A;
    2. unsigned char B;
    3. unsigned long C;
  2.  } DATA;
  3.  
  4. printf("DATA 의 크기는 %d 바이트다.", sizeof( DATA ) );

 

구조체의 크기는 1 + 1 + 4 해서 6바이트가 되어야 하지만 실제로 8바이트이다.

왜냐하면 32비트 시스템 들은 4바이트 정렬을 하기 떄문에 4바이트 단위로 정렬을 한다.

그래서 6바이트보다 큰 수 가운데 4로 나누어 떨어지는 가장 작은 수 인 8이 실행 결과로 나온다.

 

그러므로 구조체의 패킹 방법을 사용한다.

  1.  typedef struct NODE
    {
  2. unsigned char A;
  3. unsigned char B;
  4. unsigned long C;
  5. }  _attribute_ ((packed)) DATA;

 

 

 

 

 

이 글은 스프링노트에서 작성되었습니다.

'책 정리 > 좋은 프로그래밍 습관' 카테고리의 다른 글

Chapter 15. 전처리기  (0) 2009.09.04
Chapter 14. 공용체  (0) 2009.09.04
Chapter 12. 함수 포인터  (0) 2009.09.04
Chapter 11. 포인터  (0) 2009.09.04
Chapter 10. 연산자  (0) 2009.09.04

설정

트랙백

댓글