title: Understanding gcroot
body: <p>I have been reading this <a href="http://msdn.microsoft.com/en-us/library/481fa11f(v=VS.100).aspx" rel="noreferrer">article</a> to understand the gcroot template. I understand the </p>
  
  <blockquote>
    <p>gcroot provides handles into the
    garbage collected heap</p>
  </blockquote>
  
  <p>and that </p>
  
  <blockquote>
    <p>the handles themselves are not garbage
    collected.</p>
  </blockquote>
  
  <p>What I don't understand is the following: </p>
  
  <blockquote>
    <p>When the CLR object moves with the
    garbage-collected heap, the handle
    will return the new address of the
    object. A variable does not have to be
    pinned before it is assigned to a
    gcroot template.</p>
  </blockquote>
  
  <p>Does that mean that the CLR object will be deleted by the garbage collector even if there is a gcroot handle referencing that object?</p>
  
  <p>What is the "new address" that it refers to? And what does it mean that the "variable does not have to be pinned before it is assigned to a gcroot template"?</p>