검색결과 리스트
글
32bit 운영체제 일때
1+2+4 = 7 총 7Byte라고 생각하는데
실제 sizeof(test) 해보면 12Byte로 나옵니다.
이유는 운영체제가 32bit일때 4Byte에 최적화 되어 있어서
structure가 4Byte가 아니면 4Byte로 맞추는 경향이 있습니다.
이런걸 padding이라고 하는데
이럴대는 padding을 1Byte로 맞추면 됩니다.
방법은
이렇게 하고 다시 sizeof로 확인해 보면은 제대로 7Byte로 나타납니다.
ps. #pragma pack 컴파일러 명령은 구조체 단위로 멤버 정렬 방식을 설정할 때 사용합니다.
struct A { BYTE a; // 1Byte WORD b; // 2Byte DWORD c; // 4Byte }; A test;
1+2+4 = 7 총 7Byte라고 생각하는데
실제 sizeof(test) 해보면 12Byte로 나옵니다.
이유는 운영체제가 32bit일때 4Byte에 최적화 되어 있어서
structure가 4Byte가 아니면 4Byte로 맞추는 경향이 있습니다.
이런걸 padding이라고 하는데
이럴대는 padding을 1Byte로 맞추면 됩니다.
방법은
#pragma pack(push, 1) struct A { BYTE a; // 1Byte WORD b; // 2Byte DWORD c; // 4Byte }; #pragram pack(pop)
이렇게 하고 다시 sizeof로 확인해 보면은 제대로 7Byte로 나타납니다.
ps. #pragma pack 컴파일러 명령은 구조체 단위로 멤버 정렬 방식을 설정할 때 사용합니다.
'C/C++ > VC++ / MFC' 카테고리의 다른 글
[Visual Studio 2005] warning C4996: 'strcpy'이(가) deprecated로 선언되었습니다. (0) | 2008.02.20 |
---|---|
오버로딩과 오버라이딩의 차이 (0) | 2008.02.20 |
#pragma comment (0) | 2008.02.20 |
#pragma once (0) | 2008.02.20 |
CString을 char *(을)로 변환할수 없습니다. (0) | 2008.02.20 |
RECENT COMMENT