malloc(n);
で作った配列はいつフリーするよ?
関数の中で使っちまうとフリーできないじゃん。