>>205でもちょっと出てて、もしかしたらこれかなとも思う事象を発見。

void *p;
int *np;


p = MALLOC(8);
np = (int*)p;
*np = 1;

これは正常に動きますが

p = MALLOC(8);
np = (int*)((char*)p + 1);
*np = 1;

これだと動かなくなる。いろいろ検査した結果、MALLOCで取得したpの位置以外の(中途半端な)アドレスからの書き込みはフリーズします。
何これ…。
>>209がファイル周りの部分って書かれてるから、おそらくこんな感じにポインタをいじくりまわしてセーブデータでも作ろうとしたのでしょう。
これ、避ける方法ありますか?