I just need a simple clarification of memory allocation of an object
Lets say I have the following class:
public class Test
    {
        public int a;
        public Test(int A)
        {
            a = A;
        }
    }  
////Main program
Test test1 = new Test(32);
Test test2 = test1;
test2.a = 5;
Print(test1.a.ToString());// output =5
Print(test2.a.ToString());// output =5
My question is:
I know that value types are allocated in the stack and that reference types are allocated in the heap. But when an object is created and it has a value type field, were would the field be allocated?. When I create a copy of test1 and assign it to test2 both objects are pointing to the same memory location, would this mean that int a has only one copy in the stack and that's why both objects have the same output of 5?.
 
    