title: Programming languages without garbage collector: where does the garbage go?
body: <p>I'm currently studying algorithms and advanced data structures: since I'm familiar with C and it does provide a great level of control above implementation and pointer usage I'm using it to test the understanding of the subject so far.</p>
  
  <p>When testing structures that need dinamic things like lists and trees I asked myself: since C doesn't have a garbage collector, if I don't call the free() function in order to deallocate all the variables I dinamically allocate, where does that memory go?</p>
  
  <p>Other related questions incude (sorry for misusing some terms, I don't have much experience in low level abstraction):</p>
  
  <ul>
  <li><p>Does the compiler use the actual hard drive resources (like a variable is in the x record of my drive) or it "istantiates" a portion of virtual memory to compile and run my programs?</p></li>
  <li><p>Do I have lots of lists, trees and graphs in my hard drive, all of them involving counts from 0 to 100 or the strings "abcd" and "qwerty"?</p></li>
  <li><p>Does the OS recognize said data as garbage or I'm stuck with this junk forever until I format the drive?</p></li>
  </ul>
  
  <p>I'm really curious about it, I never went below the C level of abstraction.</p>