:sizeof 및 부호없는 char 배열 오류? (C/C++) 내가이 구조를 작성한
struct bmpheader {
unsigned char magic[2];
unsigned int fsize;
unsigned int unused;
unsigned int pixdata_offset;
unsigned int headersize;
unsigned int width;
unsigned int height;
unsigned short planes_color;
unsigned short bpp;
unsigned int compression;
unsigned int sizeofpix;
unsigned int resolutionx;
unsigned int resolutiony;
unsigned int colors;
unsigned int imp_colors;
};
그리고 난를 sizeof 기능에 문제가있다. 내 손가락에 메신저를 매길 때마다 매번 54 바이트를받습니다. sizeof 함수는 매번 나에게 56. 왜? 문제는 부호가없는 char 배열로, magic [2] 배열을 제거 할 때, sizeof가 52입니까? sizeof (header.magic)는 2로 표시됩니다. 지금까지 unsigned char은 1 바이트 유형을 알고 있습니까?
미리 답변 해 주셔서 감사합니다. 4 바이트의 주소에 배치 할 때,
마르신
손가락으로 54까지 셀 수 있습니까? –
컴파일러는 구조체 레이아웃에 패딩을 삽입하여 필드 정렬을 향상시킵니다. 이 패딩은 두 개의 마술 숯과 첫 번째 int 사이에 int가 모두 4 바이트 경계에 있는지 확인합니다. –
@SethCarnegie, 내 손가락에 최대 1024 개까지 셀 수 있습니다. – Lol4t0