Some similar code in C will be more clear:
{ int x; // allocates space for x { int *p=&x; // does not allocate for something p points to (only for p) // ... } // leaves inner scope, p vanishes, *p is not deallocated // ... } // leaves outer scope, x is deallocated
C # code does the same.
source share