@ 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 <[email protected]>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 <[email protected]>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 <[email protected]> wrote: >> > can anyone explain in detail .....how structure padding is >> advantageous??? >> > >> > On Fri, Jul 29, 2011 at 10:28 PM, Rohit Srivastava >> > <[email protected]>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 >> >> <[email protected]>wrote: >> >> >> >>> Thanks guys...so much...!! >> >>> >> >>> On 7/29/11, nullpointer <[email protected]> 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 <[email protected]> >> 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 >> >>> >> <[email protected]>wrote: >> >>> >> >> >>> >> >> >>> >> >> >>> >> > @nikhil: If i declare "Char b" after "int c".., would there be >> any >> >>> >> > difference...? >> >>> >> >> >>> >> > On 7/28/11, Nikhil Gupta <[email protected]> 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 < >> >>> [email protected]> >> >>> >> > wrote: >> >>> >> >> >>> >> > >> yes this will be the case. >> >>> >> >> >>> >> > >> On Wed, Jul 27, 2011 at 11:35 PM, Puneet Gautam >> >>> >> > >> <[email protected]>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 <[email protected]> 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 >> >>> >> > >>> > <[email protected]>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 >> >>> [email protected]. >> >>> >> > >>> >> To unsubscribe from this group, send email to >> >>> >> > >>> >> [email protected]. >> >>> >> > >>> >> 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 >> >>> [email protected]. >> >>> >> > >>> > To unsubscribe from this group, send email to >> >>> >> > >>> > [email protected]. >> >>> >> > >>> > 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 >> [email protected]. >> >>> >> > >>> To unsubscribe from this group, send email to >> >>> >> > >>> [email protected]. >> >>> >> > >>> 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 >> [email protected]. >> >>> >> > >> To unsubscribe from this group, send email to >> >>> >> > >> [email protected]. >> >>> >> > >> 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 >> [email protected]. >> >>> >> > > To unsubscribe from this group, send email to >> >>> >> > > [email protected]. >> >>> >> > > 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 [email protected]. >> >>> >> > To unsubscribe from this group, send email to >> >>> >> > [email protected]. >> >>> >> > 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 [email protected]. >> >>> > To unsubscribe from this group, send email to >> >>> > [email protected]. >> >>> > 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 [email protected]. >> >>> To unsubscribe from this group, send email to >> >>> [email protected]. >> >>> 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 [email protected]. >> >> To unsubscribe from this group, send email to >> >> [email protected]. >> >> 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 [email protected]. >> > To unsubscribe from this group, send email to >> > [email protected]. >> > 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 [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> 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 [email protected]. > To unsubscribe from this group, send email to > [email protected]. > 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.
