title: Delphi dynamic array
body: <p>I'm using Delphi 10.0 Seattle.</p>
  
  <p>Suppose I have a record like this:</p>
  
  <pre><code>TmyRecord = record
    a,b : string;
    ar  : array of string
  end;
  </code></pre>
  
  <p>And a variable like this:</p>
  
  <pre><code>v : array of TmyRecord;
  </code></pre>
  
  <p>and some code like this:</p>
  
  <pre><code>SetLength(v,2);
  SetLength(v[0].ar,3);
  SetLength(v[1].ar,2);
  SetLength(v[0].ar[0],10);
  SetLength(v[0].ar[1],5);
  SetLength(v[0].ar[2],7);
  ...
  v[0].ar[0][0] := 'aaaa';
  v[0].ar[0][1] := 'bbbb';
  ....
  v[1].ar[1][0] := 'xxxx';
  </code></pre>
  
  <p>Will this statement:</p>
  
  <pre><code>SetLength(v,0);
  </code></pre>
  
  <p>free all of the occupied memory, or do I have to free it manually?</p>