@everyone: What happens to those padded byte addresses.. do they
remain empty or what..?
Can we utilize those padded bytes in any way ..?


On 7/30/11, tech rascal <techrascal...@gmail.com> wrote:
> can anyone explain in detail .....how structure padding is advantageous???
>
> On Fri, Jul 29, 2011 at 10:28 PM, Rohit Srivastava
> <access2ro...@gmail.com>wrote:
>
>> padding based on the bit interleaving(low order) which is basically
>> hardware dependent.
>>
>>
>> On Fri, Jul 29, 2011 at 10:10 PM, Puneet Gautam
>> <puneet.nsi...@gmail.com>wrote:
>>
>>> Thanks guys...so much...!!
>>>
>>> On 7/29/11, nullpointer <nullpointer...@gmail.com> wrote:
>>> > #include<stdio.h>
>>> > #include<conio.h>
>>> > struc MyStructA {
>>> >
>>> >  char a;
>>> >  char b;
>>> >  int c;
>>> > };
>>> >
>>> > struct MyStructB {
>>> >  char a;
>>> >  int c;
>>> >  char b;
>>> > };
>>> >
>>> > int main(void) {
>>> >
>>> >  struct MyStructA A;
>>> >  struct MyStructB B;
>>> >
>>> > int sizeA = sizeof(struct MyStructA);
>>> >  int sizeB = sizeof(struct MyStructB);
>>> >  return 0;
>>> >
>>> > }
>>> >
>>> > OUTPUT IS
>>> > A = 8
>>> > B = 12
>>> > Structure padding is done to try and make sure that variables start in
>>> > memory at addresses that are a multiple of their size.
>>> > This is more efficient at hardware level (needs less cpu ticks to read
>>> > or write variables) and in some platforms this is mandatory, though
>>> > not on i386. There are CPU's that can only handle double precision
>>> > floats if they are aligned on addresses that are a multiople of 8.
>>> >
>>> >
>>> > In this struct:
>>> > struct MyStructA {
>>> >
>>> >  char a;
>>> >  char b;
>>> > int c;
>>> > };
>>> > the beginning of the struct is to be assumed at 0 (I'l explain later)
>>> > a is 1 byte so it needs no padding in front of it.
>>> > the same goes for b.
>>> > but c is 4 bytes. it should be placed at an address boundary that is a
>>> > multiple of 4, so the compiler adds 2 dummy bytes in front of it.
>>> > These 2 bytes change the size from 6 to 8.
>>> > Now in this struct:
>>> > struct MyStructB {
>>> >  char a;
>>> >  int c;
>>> >  char b;
>>> > };
>>> >
>>> > a starts on 0, so no need for padding.
>>> > c needs 3 bytes in front of it, and b needs no padding.
>>> > this would bring the struct size to 9. HOWEVER, suppose that you place
>>> > 2 of those structs in an array, the address rules for the second
>>> > struct in the array are the same as for the first struct.
>>> > If that second struct would start at byte 10, this would not be true
>>> > so the compiler also inserts some padding at the end of the structure
>>> > so that the next struct after it starts at a multiple of the size of
>>> > its largest member.
>>> >
>>> >
>>> >
>>> >
>>> > On Jul 29, 3:36 pm, Arun Vishwanathan <aaron.nar...@gmail.com> wrote:
>>> >> @puneet : no , in this case since 4 bytes will be used for int a and
>>> int c
>>> >> and then 1 byte for char b with 3 padded bytes next..it wud be the
>>> >> same
>>> >> here
>>> >>
>>> >> On Fri, Jul 29, 2011 at 12:11 PM, Puneet Gautam
>>> >> <puneet.nsi...@gmail.com>wrote:
>>> >>
>>> >>
>>> >>
>>> >> > @nikhil: If i declare "Char b" after "int c".., would there be any
>>> >> > difference...?
>>> >>
>>> >> > On 7/28/11, Nikhil Gupta <nikhilgupta2...@gmail.com> wrote:
>>> >> > > Here's another example.
>>> >>
>>> >> > > struct example
>>> >> > > {
>>> >> > > int a;
>>> >> > > char b;
>>> >> > > int c;
>>> >> > > }
>>> >>
>>> >> > > Now if a variable of type example is declared then
>>> >> > > (considering base address as 2000)
>>> >> > > a gets : 2000 to 2003
>>> >> > > b gets : 2004
>>> >> > > c gets : 2005 to 2008 ? NO
>>> >>
>>> >> > > It gets 2008 to 2011. The bytes from 2005 to 2007 (3 bytes) are
>>> padded
>>> >> > > in
>>> >> > > this case.
>>> >>
>>> >> > > On Thu, Jul 28, 2011 at 12:18 AM, Aman Goyal <
>>> aman.goya...@gmail.com>
>>> >> > wrote:
>>> >>
>>> >> > >> yes this will be the case.
>>> >>
>>> >> > >> On Wed, Jul 27, 2011 at 11:35 PM, Puneet Gautam
>>> >> > >> <puneet.nsi...@gmail.com>wrote:
>>> >>
>>> >> > >>> @nikhil:So what u mean is that if i have:
>>> >>
>>> >> > >>> struct{
>>> >> > >>> int a;
>>> >> > >>> char b[5];
>>> >> > >>> };
>>> >>
>>> >> > >>> the size of this struct's node will be 12 not 9.., to make it a
>>> >> > multiple
>>> >> > >>> of 4??
>>> >>
>>> >> > >>> On 7/26/11, Nikhil Gupta <nikhilgupta2...@gmail.com> wrote:
>>> >> > >>> > Padding is not a topic of self referential structure.
>>> >>
>>> >> > >>> > Padding means that extra spaces of memory are used by the
>>> compiler
>>> >> > >>> > to
>>> >> > >>> > allocate memory. This is done to have the memory address as a
>>> >> > multiple
>>> >> > >>> of
>>> >> > >>> > the size of the variable. This speeds up the processing of
>>> these
>>> >> > >>> variables
>>> >> > >>> > by the compiler.
>>> >>
>>> >> > >>> > On Tue, Jul 26, 2011 at 8:09 PM, Puneet Gautam
>>> >> > >>> > <puneet.nsi...@gmail.com>wrote:
>>> >>
>>> >> > >>> >> what is meant by padding in self_referenced structure?
>>> >> > >>> >> Is it always necessary?
>>> >>
>>> >> > >>> >> --
>>> >> > >>> >> You received this message because you are subscribed to the
>>> >> > >>> >> Google
>>> >> > >>> Groups
>>> >> > >>> >> "Algorithm Geeks" group.
>>> >> > >>> >> To post to this group, send email to
>>> algogeeks@googlegroups.com.
>>> >> > >>> >> To unsubscribe from this group, send email to
>>> >> > >>> >> algogeeks+unsubscr...@googlegroups.com.
>>> >> > >>> >> For more options, visit this group at
>>> >> > >>> >>http://groups.google.com/group/algogeeks?hl=en.
>>> >>
>>> >> > >>> > --
>>> >> > >>> > Nikhil Gupta
>>> >> > >>> > Senior Co-ordinator, Publicity
>>> >> > >>> > CSI, NSIT Students' Branch
>>> >> > >>> > NSIT, New Delhi, India
>>> >>
>>> >> > >>> > --
>>> >> > >>> > You received this message because you are subscribed to the
>>> Google
>>> >> > >>> Groups
>>> >> > >>> > "Algorithm Geeks" group.
>>> >> > >>> > To post to this group, send email to
>>> algogeeks@googlegroups.com.
>>> >> > >>> > To unsubscribe from this group, send email to
>>> >> > >>> > algogeeks+unsubscr...@googlegroups.com.
>>> >> > >>> > For more options, visit this group at
>>> >> > >>> >http://groups.google.com/group/algogeeks?hl=en.
>>> >>
>>> >> > >>> --
>>> >> > >>> You received this message because you are subscribed to the
>>> Google
>>> >> > Groups
>>> >> > >>> "Algorithm Geeks" group.
>>> >> > >>> To post to this group, send email to algogeeks@googlegroups.com.
>>> >> > >>> To unsubscribe from this group, send email to
>>> >> > >>> algogeeks+unsubscr...@googlegroups.com.
>>> >> > >>> For more options, visit this group at
>>> >> > >>>http://groups.google.com/group/algogeeks?hl=en.
>>> >>
>>> >> > >>  --
>>> >> > >> You received this message because you are subscribed to the
>>> >> > >> Google
>>> >> > Groups
>>> >> > >> "Algorithm Geeks" group.
>>> >> > >> To post to this group, send email to algogeeks@googlegroups.com.
>>> >> > >> To unsubscribe from this group, send email to
>>> >> > >> algogeeks+unsubscr...@googlegroups.com.
>>> >> > >> For more options, visit this group at
>>> >> > >>http://groups.google.com/group/algogeeks?hl=en.
>>> >>
>>> >> > > --
>>> >> > > Nikhil Gupta
>>> >> > > Senior Co-ordinator, Publicity
>>> >> > > CSI, NSIT Students' Branch
>>> >> > > NSIT, New Delhi, India
>>> >>
>>> >> > > --
>>> >> > > You received this message because you are subscribed to the Google
>>> >> > > Groups
>>> >> > > "Algorithm Geeks" group.
>>> >> > > To post to this group, send email to algogeeks@googlegroups.com.
>>> >> > > To unsubscribe from this group, send email to
>>> >> > > algogeeks+unsubscr...@googlegroups.com.
>>> >> > > For more options, visit this group at
>>> >> > >http://groups.google.com/group/algogeeks?hl=en.
>>> >>
>>> >> > --
>>> >> >  You received this message because you are subscribed to the Google
>>> >> > Groups
>>> >> > "Algorithm Geeks" group.
>>> >> > To post to this group, send email to algogeeks@googlegroups.com.
>>> >> > To unsubscribe from this group, send email to
>>> >> > algogeeks+unsubscr...@googlegroups.com.
>>> >> > For more options, visit this group at
>>> >> >http://groups.google.com/group/algogeeks?hl=en.
>>> >>
>>> >> --
>>> >>  Arun Vish
>>> >> Graduate Student
>>> >> Department of Computer Science
>>> >> University of Southern California
>>> >
>>> > --
>>> > You received this message because you are subscribed to the Google
>>> Groups
>>> > "Algorithm Geeks" group.
>>> > To post to this group, send email to algogeeks@googlegroups.com.
>>> > To unsubscribe from this group, send email to
>>> > algogeeks+unsubscr...@googlegroups.com.
>>> > For more options, visit this group at
>>> > http://groups.google.com/group/algogeeks?hl=en.
>>> >
>>> >
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Algorithm Geeks" group.
>>> To post to this group, send email to algogeeks@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> algogeeks+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/algogeeks?hl=en.
>>>
>>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algogeeks@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to