How to avoid Structure Padding in C?
Prerequisites: Structure Member Alignment, Padding and Data Packing
In Structure, sometimes the size of the structure is more than the size of all structures members because of structure padding.
Below is an example of Structure padding:
#include <stdio.h>
struct s {
int i;
char ch;
double d;
};
int main()
{
struct s A;
printf ( "Size of A is: %ld" , sizeof (A));
}
|
Note: But what actual size of all structure member is 13 Bytes. So here total 3 bytes are wasted.
So, to avoid structure padding we can use pragma pack as well as an attribute.
Below are the solutions to avoid structure padding:
Program-1: Using pragma pack
#include <stdio.h>
#pragma pack(1)
struct s {
int i;
char ch;
double d;
};
int main()
{
struct s A;
printf ( "Size of A is: %ld" , sizeof (A));
}
|
Program-2: Using attribute
#include <stdio.h>
struct s {
int i;
char ch;
double d;
} __attribute__((packed));
int main()
{
struct s A;
printf ( "Size of A is: %ld" , sizeof (A));
}
|
Last Updated :
18 Sep, 2018
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...