>>359
cellの各要素が指す構造体そのものはヒープに確保しているから、
cell[][][]->colorとかの構造体の中身の書き換えではなく、
cell[][][]そのものの値を書き換えているところで、
インデックス範囲外アクセスがないか探してみて。

たとえば、main()中で、
int d_max = 2;
struct celldata *cell[4][3][9];

.
.
.
printf("%d\n", d_max);
movement(cell, 1, 2, 0, d_max);
printf("%d\n", d_max);
で、
void movement(struct celldata *cell[4][3][9], int x, int y, int depth, int d_max)
{
cell[3][2][9] = 0xffffff;
}
ってすると、
2
16777215
になる。ちなみに、gcc。