Cのつらいところは、スタック上に確保したオブジェクトのデストラクタが
スコープぬけてもよばれないところだよなぁ。

だから関数の最後に

EXITFUNC:
  if (ptr1 != NULL) {
    free(ptr);
  }
  if (ptr2 != NULL) {
    free(ptr2);
  }
みたいなのがズラズラと・・・。