@sid : yeah agree to ur explanation..
 but if the reference is not 0 .. if it wud have been 4 then for tht case
tell me do we really need that 7 bytes??

and yeah it is dependent on compiler size..
if u compile this snippet

struct demo
{
   char       c;
   double      d;
   int         s;

> }


in turbo c , its giving 11,, that means compiler nt doing padding at all in
turbo c..

On Sat, Aug 6, 2011 at 7:50 PM, siddharth srivastava <akssps...@gmail.com>wrote:

> Hi Sandeep
>
> On 6 August 2011 19:16, SANDEEP CHUGH <sandeep.aa...@gmail.com> wrote:
>
>> take this case
>>
>> struct demo
>> {
>>    char       c;
>>    double      d;
>>    int         s;
>>
>>> }
>>
>>
>> what wud be the size??
>>
>>
>> solution is 24 according to following:-->
>>
>> char (1) + 7 byte padding +double(8)+int(4)+ 4 byte padding
>>
>>
>> suppose address starts at 4..
>>
>>  i just wanna ask .. why there is 7 byte padding.. because just after 3
>> bytes padding after char we are getting address that is multiple of 8(size
>> of largest)..
>>
>
>
> after 3 bytes of padding i.e. the 4th byte(if reference is 0), is not a
> multiple of 8.
> Moreover, try understanding with this example:
> visualize a stack of memory with each location having the size of the
> largest sized variable in the structure.
> So in your case, each stack element is ought to be 8 bytes (due to double)
> Now, when first character is allocated, we have only 7 bytes left at that
> location in the stack, hence double has to be allocated in the next
> location.i.e. 2nd stack element and 8th byte (again reference 0)
>
> So total size is ought to be occupied is 24 in this case
>
>
> say if you had this declaration:
> struct a
> {
> char a;
> double d;
> int c;
> int e;
> }
>
> then too size would have been 24 as after allocation of int c, we still
> have 4 bytes in the same location which are then occupied by e (and were
> padded in previous case)
>
> Let me know, if I am not clear.
>
> @All
> Is it really architecture dependent (32 bit or 64 bit) ?
>
>
>
>>
>> can u please tell me??
>>
>>
>>
>> --
>> 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.
>>
>
>
>
> --
> Regards
> Siddharth Srivastava
>
>
>  --
> 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.

Reply via email to