sizeof()

Started by
2 comments, last by SoGreen 22 years, 8 months ago
I ran into a little problem today using sizeof() and was hoping someone could clear it up for me. Im writing a basic 3ds loader and have a struct declared like so: struct _3DSCHUNKHEADER { WORD ChunkID; DWORD ChunkLength; }; When I use sizeof() to read a chunk header ... _3DSCHUNKHEADER ChunkHeader; fread(&ChunkHeader, sizeof(_3DSCHUNKHEADER), 1, file); its reading 8 bytes instead of 6, anyone know why? When i break it up into 2 freads ... fread(&ChunkHeader.ChunkID, sizeof(WORD), 1, file); fread(&ChunkHeader.ChunkLength, sizeof(DWROD), 1, file); it works fine. sizeof(WORD) = 2; sizeof(DWORD) = 4; sizeof(_3DSCHUNKHEADER) = 8; Im Confused. Edited by - SoGreen on August 9, 2001 4:58:17 PM
There's always something smaller and something bigger. Don't sweat the small stuff and don't piss off the big stuff :)
Advertisement
Compilers can do this kind of thing to get optimization. Read you compiler documentation to find out more specific information.
Ahh, I didnt think of that, your probably right, time to do some reading, thanks. :p
There's always something smaller and something bigger. Don't sweat the small stuff and don't piss off the big stuff :)
Look into ''#pragma pack'' Your structures are normally padded to even 8 byte boundaries. You can turn packing on/off using the #pragma pack directive

This topic is closed to new replies.

Advertisement