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.