Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C++ (http://www.go4expert.com/forums/cpp/)
-   -   Output of program (http://www.go4expert.com/forums/output-of-program-t449/)

SATYAN JANA 30Sep2005 15:27

Output of program
 
Code: CPP

/******************************/
class A
{
private:
  int a;
  char b;
};

class B
{
private:
  char b;
};

int main()
{
  A a;
  B b;
  cout<<sizeof(a)<<"  "<<sizeof(b)<<endl;
  return 0;
}
/******************************************/

What will be the output of the above program?
The output will be,-
8 1
Why?...
















In class B, 1 byte is as usual allocated for char 'b'. But in case of class A,
4 bytes for integer 'a' and next 4 bytes for char 'b'. This is because of packaging format.

shabbir 30Sep2005 21:17

Re: Output of program
 
I didn't knew this. Its really kool so out of excitement I tried even the double one and it gave 16 and 1

SATYAN JANA 1Oct2005 10:31

Re: Output of program
 
Hmmm,
even the size of pointers can change. If you have double and char* still it will be (8 + 8 =)16.

shabbir 1Oct2005 14:13

Re: Output of program
 
Quote:

Originally Posted by SATYAN JANA
Hmmm,
even the size of pointers can change. If you have double and char* still it will be (8 + 8 =)16.

Yup, seen that.

rahul_scss 15Oct2005 21:01

Re: Output of program
 
Can somebody please tell me what exactly the rules of this packaging format are???

shabbir 17Oct2005 14:50

Re: Output of program
 
Quote:

Originally Posted by rahul_scss
Can somebody please tell me what exactly the rules of this packaging format are???

If you visualize the memory as rows and columns then if you need to allocate some memory in different rows[for different variables] then you have to allocate n no of cols of bytes for each variable and n is choosen as maximum size.

e.g.
Variable 1 mem [8 bytes] | | | | | | | |
Variable 2 mem [4 bytes] | | | |

Instead of 4 bytes it allocates 8 to keep the packaging format in good shape for second variable memory.

If you go about by sequential memory segment then also allocating each variable memory of n [choosen as maximum] is easier and so it allocates 8 + 8 bytes instead of 8 + 4 bytes.

rahul_scss 17Oct2005 23:08

Re: Output of program
 
Thanks Very Much Shabbir...

shabbir 18Oct2005 10:36

Re: Output of program
 
Quote:

Originally Posted by rahul_scss
Thanks Very Much Shabbir...

My pleasure.

pradeep 18Oct2005 11:25

Re: Output of program
 
Very useful piece of information Shabbir bhai.


All times are GMT +5.5. The time now is 14:52.