public class MyClass
{
    int i = 0;
    string str = "here";
    MyStruct mystruct;
    B b;
    ArrayList myList = new ArrayList(10);

    public MyClass()
    {
    }
    ....
}

public struct MyStruct
{
    public int i;
    public float f;
}

public class B
{
    ...
}

Want to learn how an instance of a class is created in the background. When this statement

 MyClass myClass = new MyClass();

is evaluated. What will happen in the backgroud? My following statements are correct or not (for 32-bit OS machine)?

  1. A memory space will be created and referenced as myClass;
  2. within above memory space, 4 bytes is used for the value of int i;
  3. within above memory space, 4 bytes is used for the reference of string str; the actual value of the str is stored in other location (where?)
  4. within above memory space, 8 bytes is used for the value of MyStruct mystruct (because MyStruct is 8 bytes);
  5. within above memory space, 4 bytes is used for the reference of the B b object; memory for b object will be allocated in somewhere else when it is instantiated;
  6. within above memory space, 4 bytes is used for the reference of the ArrayList myList; actual memory space for ArrayList myList is allocated in other place and referenced in here as myList;
  7. another 4 or 8 bytes from above memory space is used for object metadata;
  8. ...;
Edit
Report