title: Why does my calloc fail to zero everything out?
body: <p>I defined the following function, where List is a structure.</p>
  
  <pre><code>List * LIST_Create()
  {
    List * l = calloc(0, sizeof(List));
    unsigned char * pc = (unsigned char *)l;  
    for(i = 0; i &lt; sizeof(List); i++)
    {
      LOG("LIST","0x%1x ", (unsigned char)*pc);
      pc++;
    }
  }
  </code></pre>
  
  <p>When I print out the bytes I get this:</p>
  
  <pre><code>LIST: 0xffffffbf 
  LIST: 0x1 
  LIST: 0x13 
  LIST: 0x0 
  LIST: 0x1 
  LIST: 0x1 
  LIST: 0x0 
  LIST: 0x0 
  LIST: 0x0 
  LIST: 0x0 
  LIST: 0x0 
  LIST: 0x5 
  </code></pre>
  
  <p>what's going on? I know it isn't the printing that's the issue, because the code is reading non-zero values too. The only way I can reliably zero out the List structure seems to be to initialise all the members individually. I don't mind, but shouldn't <code>calloc()</code> work?</p>