次のコードを理解するのに苦労しています。
int stride = 512;
int max_len = 1024 * stride;
char *addr = (char *)malloc(max_len);
for (int i=stride; i<max_len; i += stride)
*(char **)&addr[i-stride] = (char*)&addr[i];
*(char **)&addr[i-stride] = (char*)&addr[0];
コードを見ると、これはある種の循環リンクリストを作成しようとしているようです。しかし、私はそれらのキャストが実際に何をしているのか分かりません。