From: j DOT aldrich6 AT genie DOT com Message-Id: <199605090327.AA248672446@relay1.geis.com> Date: Thu, 9 May 96 03:15:00 UTC 0000 To: djgpp AT delorie DOT com Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii Subject: Re: more sizeof questions Reply to message 3496513 from FORTIN44 AT EELA on 05/08/96 3:45PM >OK, I'm a bit confused..(nothing new i'm afraid)... The structure >below was taken from the VESA 1.2 spec. sizeof(_VGAInfoBlock) should >be 256. DJGPP gives 260. What's up with this. A previous posting >mentioned 4 byte boundaries, but 256 is divisable by 4. Any Ideas?? The size of the whole structure may be divisible by 4, but the individual fields also have to be word-aligned. Read on... >typedef unsigned char BYTE; >typedef unsigned short WORD; >typedef unsigned long DWORD; >typedef struct >{ > DWORD VESASignature; 4 > WORD VESAVersion; 2 (+2 padding) > DWORD OEMStringPointer; 4 > DWORD Capabilities; 4 > DWORD VideoModePointer; 4 > WORD TotalMemory; 2 (+2 padding) > BYTE Info[236]; 236 >} _VGAInfoBlock; = 256 bytes (260 with internal padding) Each of your 2-byte fields gets another 2 bytes of padding on it, for a total of 260. There IS a workaround, though, in the form of the gcc __attribute__ ((packed)) command. See my last post for details. John