title: I can use more memory than how much I've allocated with malloc(), why?
body: <pre><code>char *cp = (char *) malloc(1);
  strcpy(cp, "123456789");
  puts(cp);
  </code></pre>
  
  <p>output is "123456789" on both gcc (Linux) and Visual C++ Express, does that mean when there is free memory, I can actually use more than what I've allocated with <code>malloc()</code>?</p>
  
  <p>and why <code>malloc(0)</code> doesn't cause runtime error?</p>
  
  <p>Thanks.</p>