When operator new() is used with reference type, space for the instance is allocated on the heap and reference variable itself is placed on the stack. Besides t
From developer point of view you have no knowledge where it is allocated. For example, an exotic device with CLR which has no idea of the stack -> everthing goes on the heap. Even if you consider the desktop CLR, in some cases JITer can move variables from the stack to the heap.