This is more efficient at hardware level (needs less cpu ticks to read or write variable).
I am asking ..how it needs less CPU ticks for accessing the variable?? On Sat, Jul 30, 2011 at 8:33 PM, Nikhil Gupta <nikhilgupta2...@gmail.com>wrote: > As explained by someone above : 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. > > On Sat, Jul 30, 2011 at 8:23 PM, tech rascal <techrascal...@gmail.com>wrote: > >> @ Nikhil: please explain y these memory spaces r left empty??? or hw >> structure padding increase execution speed? >> >> On Sat, Jul 30, 2011 at 8:05 PM, Nikhil Gupta >> <nikhilgupta2...@gmail.com>wrote: >> >>> They remain empty. You cannot use them. The purpose for which they are >>> left will be defeated then. >>> >>> >>> On Sat, Jul 30, 2011 at 1:03 PM, Puneet Gautam >>> <puneet.nsi...@gmail.com>wrote: >>> >>>> @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. >>>> >>>> >>> >>> >>> -- >>> 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. >> > > > > -- > 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.