title: Which algorithm is used in List<T> to dynamically allocate memory?
body: <p>Now I have an algorithm for dynamically allocating memory on an array:</p>
  
  <ul>
  <li>If array is full I create a new array of twice the size, and copy items.</li>
  <li>If array is one-quarter full I create a new array of half the size, and copy items.</li>
  </ul>
  
  <p>This is fairly fast algorithm for dynamic memory allocation despite the extra over-head of copying the elements to the newly allocated array.</p>
  
  <ol>
  <li><p>What is the faster, <code>List&lt;T&gt;</code> or such an algorithm based on an array? What would you recommend to use?</p></li>
  <li><p>does <code>List&lt;T&gt;</code> use simple array as internal data structure?</p></li>
  </ol>