XXX の値は小さければ 10 以下であれば、問題ないようでした。
環境は、FreeBSD 5.3 STABLE です。
SDL は ports からインストールしました。
バックトレースは以下のようなものでした。

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1 (LWP 100099)]
0x08048b93 in main () at test.c:50
50 ((Uint16*)(surface->pixels))[ z ] = data[ j ][ z ];
上の SDL_CreateRGBSurfaceFrom を使用すると、
今度は、blit 中に落ちてしまいます。
回避方法がわからないので、メモリ中のイメージを 60 個程度q
surface にするにはどうすればいいのでしょうか?