title: A general question about pointers and dynamic memory
body: <p>I'm currently dealing with total of 21 megabytes of plain text data that is written onto several files. It consists of some strings and integers. Containing them properly is important for me to be able to loop through them in various ways so I'm using a fairly complex <code>typedef</code> for my container such as</p>
  <pre><code>typedef std::tuple&lt;std::string,
                     std::array&lt;time_t, 12&gt;,
                     std::array&lt;std::map&lt;std::vector&lt;UINT&gt;, bool&gt;, 4&gt;&gt; cont;
  </code></pre>
  <p>I put my data into a <code>std::vector&lt;cont*&gt; v</code> at final step. Is my usage logically feasible? I once read that OS reserves 1 megabyte of memory for each executable's stack memory. Is it true? Let's suppose that my data drastically increased. Pointers such as these in my system are 8 bytes by size no matter what they point to. It makes sense since they're just some sort of integers pointing to somewhere in memory and they could be considered as plain <code>long long int</code>. Now assuming that stack memory is 1 megabyte and inserting 131072 pointers into this vector could fill it up since the vector itself is allocated in the stack. So what is the correct approach for such an abstract scenario? Would, allocating this vector itself too in the heap, suffice? I mean something like <code>typedef std::vector&lt;cont*&gt; cont2; cont2* v=new cont2{};</code>
  Now can I access the elements as usual? How is the correct syntax for that?</p>