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.