title: casting char* to char**
body: <p>I am having a tough time understanding the following piece of code:</p>
  
  <pre><code>int stride = 512;
  int max_len = 1024 * stride; 
  char *addr = (char *)malloc(max_len);
  for (int i=stride; i&lt;max_len; i += stride)
      *(char **)&amp;addr[i-stride] = (char*)&amp;addr[i];
  *(char **)&amp;addr[i-stride] = (char*)&amp;addr[0];
  </code></pre>
  
  <p>Looking at the code it seems this is trying to create some kind of circular link list. But I have no clue what those casts are actually doing.</p>