title: What is the correct way to dynamically create/release runtime forms?
body: <p>I always try to create my Applications with memory usage in mind, if you dont need it then don't create it is the way I look at it.</p>
  
  <p>Anyway, take the following as an example:</p>
  
  <pre><code>Form2:= TForm2.Create(nil);
  try
    Form2.ShowModal;
  finally
    Form2.FreeOnRelease;
  end;
  </code></pre>
  
  <p>I actually think Form2.Destroy is probably the better option, which brings me to my question..</p>
  
  <p>What is the difference between calling:</p>
  
  <pre><code>Form2.Destroy;
  Form2.Free;
  Form2.FreeOnRelease;
  </code></pre>
  
  <p>They all do the same or similar job, unless I am missing something.</p>
  
  <p>And also when should any of the above be used? Obviously when freeing an Object I understand that, but in some situations is <code>Destroy</code> better suited than <code>Free</code> for example?</p>