Re: packing fun

"Scoubidou944" <[email protected]>
Newsgroups gmane.games.devel.general
Message-ID <[email protected]>
Don't sure about what your problem is on padding.

#pragma pack(push)
#pragma pack(4)
struct Alice
{
    int Integer1;
    char Char1;
    // HERE COMPILER WILL ADD PADDING BYTES TO 0
    char u8Padding1[3];  // == 0
};

struct Bob : Alice
{
    char Char2;
    // HERE COMPILER WILL ADD PADDING BYTES TO 0
    char u8Padding2[3];  // == 0
};
#pragma pack(pop)

So in memory, we will have 2 structure which are both aligned on 4 bytes :
Integer1    Char1    u8Padding1    Char2    u8Padding2
|     4             1              3           |     1               3
|
+-------------------------------+---------------------+
|                  Alice                       |              Bob
|

If you don't want to loose space in memory (is there any warrior of low
memory using in C++ coding ;p) push & pop the stack to fit to the minimum
size required or reduced size of variables like this :

struct Alice
{
    int         i24Integer1 : 24;           // Will have previous Integer1
which fit in 24 bits instead 32
    int         i8Integer1   : 8;            // Will have previous Char1
};
==> sizeof (Alice) = 4 instead 8 and we keep 4 bytes alignment.

Vincent


-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills.  Sign up for IBM's
Free Linux Tutorials.  Learn everything from the bash shell to sys admin.
Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click
_______________________________________________
Gamedevlists-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gamedevlists-general
Archives:
http://sourceforge.net/mailarchive/forum.php?forum_id=557
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.