title: Memory allocation by a string declaration
body: <p>When I declare a string like that:</p>
  
  <pre><code>char string[] = "Hello";
  </code></pre>
  
  <p>It is actually equivilant to - </p>
  
  <pre><code>char string[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
  </code></pre>
  
  <p>So a memory on the stack was allocated for the string by its declaration.  But what happens when I declare a string like that:</p>
  
  <pre><code>char *string = "Hello";
  </code></pre>
  
  <p>The variable 'string' contains the address where the first letter of the string, 'H', is located on memory.  I would like to ask:</p>
  
  <ol>
  <li><p>Where the string is located on memory? stack\heap\etc.</p></li>
  <li><p>Does enough memory is allocated for the string automatically, or I have to allocate 
  memory (for example, by <code>malloc</code>) to the string by myself? And if I have to, how can I do that (I would like to a little example of code)?</p></li>
  </ol>
  
  <p>I would like to note that there are good chances that the answer for my question is system-dependent. If it is, please note this fact, and try to answer according to what's happens on the popular platforms (Windows, Linux etc).</p>