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.