>>60
深いところから逆順にループさせて解放する
要素数はlengthで返してるみたいだからmain()の最後で以下を実行

for (i = length; i > 0; i--) {
  free(splits[i - 1]);
  splits[i - 1] = NULL;
}
free(splits);
splits = NULL;