Field Reports の拡張モジュールを作成する際に,メモリ管理やエラー処理といった通常サンプルプログラム等で説明されていような所で色々苦労しました。 注意点を記録しておきます。 メモリ管理 OCamlのGCと折り合いを付けるには,以下3点のルールを必ず守る必要があります。 関数の先頭に CAMLparamN() を置く。 関数内で allocate したデータを格納する変数は,CAMLlocalN() で宣言する。 return文は使わずに,CAMLreturn() マクロを使用する。 CAMLparamN() マクロ value型の引数がない場合は ,CAMLparam0() を使います。 value型の引数を受け取った場合は,CAMLparamN() の引数に含めます。 CAMLlocalN() マクロ 関数内で alloc したデータを一時的に変数に保持する必要がある場合は,