title: Do I have to call memset after I allocated new memory using malloc
body: <pre><code>#include "stdlib.h"
  #include "stdio.h"
  #include "string.h"
  int main(int argc, char* argv[])
  {
      int *test = malloc(15 * sizeof(int));
      for(int i = 0;i &lt; 15 ;i  ++ )
          printf("test is %i\n",test[i]);
  
      memset(test,0,sizeof(int) * 15);
  
      for(int i = 0 ; i &lt; 15; i ++ )
          printf("test after memset is %i\n",test[i]);
  
      return 0;
  }
  </code></pre>
  
  <p>The output I get is very weird:</p>
  
  <pre><code>    test is 1142126264
      test is 32526
      ...
      test is 1701409394
      test is 1869348978
      test is 1694498930
      test after memset is 0
      test after memset is 0
      test after memset is 0
      test after memset is 0
      test after memset is 0
      ...
      test after memset is 0
      test after memset is 0
      test after memset is 0
      test after memset is 0
      test after memset is 0
  </code></pre>
  
  <p>Why would that happen?
  I thought I just <code>malloc</code>ed some new fresh memory that is ready to use?</p>
  
  <p>So how about this:</p>
  
  <pre><code>int test[15];
  </code></pre>
  
  <p>Do I have to call
  <code>memset(&amp;test,0,sizeof(int) * 15);</code> ?</p>