#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//------------------ Example 1: Basic Padding -----------------
struct A {
char a; // 1 byte
int b; // 4 bytes -> requires alignment
char c; // 1 byte
} ;
//------------------ Example 2: Multiple Structures ------------
struct S1 {
char c;
double d;
int i;
} ;
struct S2 {
double d;
int i;
char c;
} ;
struct S3 {
char c;
int i;
double d;
} ;
//------------------ Example 3: Packed Structure -----------------
#pragma pack(1) // Disable padding
struct Packed {
char a;
int b;
char c;
} ;
#pragma pack() // Reset packing
//------------------ Example 4: Compare Normal vs Packed ---------
struct Normal {
char a;
int b;
char c;
} ;
#pragma pack(1)
struct Packed2 {
char a;
int b;
char c;
} ;
#pragma pack()
//------------------ Main Function -------------------------------
int main( ) {
printf ( "------ EXAMPLE 1: Single Structure ------\n " ) ; printf ( "Size of struct A = %lu bytes\n \n " , sizeof ( struct A
) ) ;
printf ( "------ EXAMPLE 2: Multiple Structures (ordering) ------\n " ) ; printf ( "Size of S1 = %lu bytes\n " , sizeof ( struct S1
) ) ; printf ( "Size of S2 = %lu bytes (better ordering!)\n " , sizeof ( struct S2
) ) ; printf ( "Size of S3 = %lu bytes\n \n " , sizeof ( struct S3
) ) ;
printf ( "------ EXAMPLE 3: Packed Structure (disabled padding) ------\n " ) ; printf ( "Size of struct Packed = %lu bytes (packing forced)\n \n " , sizeof ( struct Packed
) ) ;
printf ( "------ EXAMPLE 4: Normal vs Packed Comparison ------\n " ) ; printf ( "Size of Normal = %lu bytes\n " , sizeof ( struct Normal
) ) ; printf ( "Size of Packed2 = %lu bytes\n " , sizeof ( struct Packed2
) ) ;
printf ( "- Structure padding exists to align data in memory for performance.\n " ) ; printf ( "- Reordering members can reduce padding.\n " ) ; printf ( "- #pragma pack(1) removes padding but makes access slower.\n " ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KCi8vLS0tLS0tLS0tLS0tLS0tLS0tIEV4YW1wbGUgMTogQmFzaWMgUGFkZGluZyAtLS0tLS0tLS0tLS0tLS0tLQpzdHJ1Y3QgQSB7CiAgICBjaGFyIGE7ICAgICAvLyAxIGJ5dGUKICAgIGludCBiOyAgICAgIC8vIDQgYnl0ZXMgLT4gcmVxdWlyZXMgYWxpZ25tZW50CiAgICBjaGFyIGM7ICAgICAvLyAxIGJ5dGUKfTsKCi8vLS0tLS0tLS0tLS0tLS0tLS0tIEV4YW1wbGUgMjogTXVsdGlwbGUgU3RydWN0dXJlcyAtLS0tLS0tLS0tLS0Kc3RydWN0IFMxIHsKICAgIGNoYXIgYzsKICAgIGRvdWJsZSBkOwogICAgaW50IGk7Cn07CgpzdHJ1Y3QgUzIgeyAKICAgIGRvdWJsZSBkOwogICAgaW50IGk7CiAgICBjaGFyIGM7Cn07CgpzdHJ1Y3QgUzMgewogICAgY2hhciBjOwogICAgaW50IGk7CiAgICBkb3VibGUgZDsKfTsKCi8vLS0tLS0tLS0tLS0tLS0tLS0tIEV4YW1wbGUgMzogUGFja2VkIFN0cnVjdHVyZSAtLS0tLS0tLS0tLS0tLS0tLQojcHJhZ21hIHBhY2soMSkgICAgICAgIC8vIERpc2FibGUgcGFkZGluZwpzdHJ1Y3QgUGFja2VkIHsKICAgIGNoYXIgYTsKICAgIGludCBiOwogICAgY2hhciBjOwp9OwojcHJhZ21hIHBhY2soKSAgICAgICAgIC8vIFJlc2V0IHBhY2tpbmcKCi8vLS0tLS0tLS0tLS0tLS0tLS0tIEV4YW1wbGUgNDogQ29tcGFyZSBOb3JtYWwgdnMgUGFja2VkIC0tLS0tLS0tLQpzdHJ1Y3QgTm9ybWFsIHsKICAgIGNoYXIgYTsKICAgIGludCBiOwogICAgY2hhciBjOwp9OwoKI3ByYWdtYSBwYWNrKDEpCnN0cnVjdCBQYWNrZWQyIHsKICAgIGNoYXIgYTsKICAgIGludCBiOwogICAgY2hhciBjOwp9OwojcHJhZ21hIHBhY2soKQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0gTWFpbiBGdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmludCBtYWluKCkgewogICAgcHJpbnRmKCItLS0tLS0gRVhBTVBMRSAxOiBTaW5nbGUgU3RydWN0dXJlIC0tLS0tLVxuIik7CiAgICBwcmludGYoIlNpemUgb2Ygc3RydWN0IEEgPSAlbHUgYnl0ZXNcblxuIiwgc2l6ZW9mKHN0cnVjdCBBKSk7CgogICAgcHJpbnRmKCItLS0tLS0gRVhBTVBMRSAyOiBNdWx0aXBsZSBTdHJ1Y3R1cmVzIChvcmRlcmluZykgLS0tLS0tXG4iKTsKICAgIHByaW50ZigiU2l6ZSBvZiBTMSA9ICVsdSBieXRlc1xuIiwgc2l6ZW9mKHN0cnVjdCBTMSkpOwogICAgcHJpbnRmKCJTaXplIG9mIFMyID0gJWx1IGJ5dGVzIChiZXR0ZXIgb3JkZXJpbmchKVxuIiwgc2l6ZW9mKHN0cnVjdCBTMikpOwogICAgcHJpbnRmKCJTaXplIG9mIFMzID0gJWx1IGJ5dGVzXG5cbiIsIHNpemVvZihzdHJ1Y3QgUzMpKTsKCiAgICBwcmludGYoIi0tLS0tLSBFWEFNUExFIDM6IFBhY2tlZCBTdHJ1Y3R1cmUgKGRpc2FibGVkIHBhZGRpbmcpIC0tLS0tLVxuIik7CiAgICBwcmludGYoIlNpemUgb2Ygc3RydWN0IFBhY2tlZCA9ICVsdSBieXRlcyAocGFja2luZyBmb3JjZWQpXG5cbiIsIHNpemVvZihzdHJ1Y3QgUGFja2VkKSk7CgogICAgcHJpbnRmKCItLS0tLS0gRVhBTVBMRSA0OiBOb3JtYWwgdnMgUGFja2VkIENvbXBhcmlzb24gLS0tLS0tXG4iKTsKICAgIHByaW50ZigiU2l6ZSBvZiBOb3JtYWwgID0gJWx1IGJ5dGVzXG4iLCBzaXplb2Yoc3RydWN0IE5vcm1hbCkpOwogICAgcHJpbnRmKCJTaXplIG9mIFBhY2tlZDIgPSAlbHUgYnl0ZXNcbiIsIHNpemVvZihzdHJ1Y3QgUGFja2VkMikpOwoKICAgIHByaW50ZigiXG5Db25jbHVzaW9uOlxuIik7CiAgICBwcmludGYoIi0gU3RydWN0dXJlIHBhZGRpbmcgZXhpc3RzIHRvIGFsaWduIGRhdGEgaW4gbWVtb3J5IGZvciBwZXJmb3JtYW5jZS5cbiIpOwogICAgcHJpbnRmKCItIFJlb3JkZXJpbmcgbWVtYmVycyBjYW4gcmVkdWNlIHBhZGRpbmcuXG4iKTsKICAgIHByaW50ZigiLSAjcHJhZ21hIHBhY2soMSkgcmVtb3ZlcyBwYWRkaW5nIGJ1dCBtYWtlcyBhY2Nlc3Mgc2xvd2VyLlxuIik7CgogICAgcmV0dXJuIDA7Cn0K