>> Delete Reply from No. 0 article
No. RE: RE: RE: 구조체에 대한 메모리 할당, 그리고
sizeof()연산자 . . .

등록 2001-06-06 01:13:00 By localhost     조회 1
이름 Jala    

		: : 저도 자세한 건 잘모르는데요.
: :
: : 저도 전에 그 문제 땜에 좀 헤맸었죠.
: :
: : align 문제라고들 하데요.
: :
: : 제가 들은 답변으로는 int 가 시작하는 위치가 메모리상의 4의 배수의 위치에 있어야
: :
: : 한다는 군요. 따라서 그렇게 되게 padding 을 하게 되는거구요.
: :
: : 아마도 filed5 담에 padding 으로 2바이트가 들어갔을거예요.
: :
: : 실험해보세요. long 의 위치를 바꾸면 size도 달라집니다.
: :
: : : 네트웍으로 들어오는 스트림을 처리 하려구 10 바이트 구조체를 선언했습니다.
: : :
: : : struct tagPSIP_Table
: : : {
: : :     unsigned char    filed1;
: : :     unsigned short   filed2;
: : :     unsgined char    filed3;
: : :     unsigned char    filed4;
: : :     unsigned char    filed5;
: : :     unsigned long    filed6;
: : : };
: : :
: : : 이 구조체의 크기를 확인 해보니까 (sizeof()) 12 바이트를 반환 하더군요.
: : :
: : : 1 + 2 + 1 + 1 + 1 + 4 = 10 인데
: : :
: : : 12를 반환하는 이유와
: : :
: : : 10바이트가 되도록 만드는 방법을 알려 주시길 . . .
: :
: : --
: : 껌을 씹을 때는 조용히...
: 1+(1)+2+1+1+1+(1)+4 = 12입니다.
: long,int는 4의 배수로 시작해야 하고
: short는 2의 배수로 시작해야 합니다.
:
: 이건 compiler 와의 약속인데,
: 이렇게 하는 이유는 32bit CPU에서 memory access를
: 최소화 하기 위한것 입니다.
: ^^
 struct tagPSIP_Table
{
  unsigned char  fileds[10];
};
 이렇게 하시고 int 등을쓸땐 캐스팅해서 쓰시면 됨니다.
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved