1

私は GC の専門家ではありませんが、GC が機能するにはVMが必要であると常にイメージしています。

私が正しければ、ネイティブ コードはどのように GC を取得しますか?

4

2 に答える 2

1

Ocaml は 2 つの異なるヒープを維持します。1 つは Ocaml データ用で、もう 1 つは malloc された C データ用です。C FFI 関数 (通常は C ヒープへのスマート ポインターによって表される抽象型) から値を返す場合、それらの値は ocaml ガベージ コレクターによって追跡されます。GC は、データに到達できないことに気付くと、スマート ポインターを介して関連するファイナライズ関数を呼び出します。したがって、オブジェクトの作成時に C インターフェースで malloc を実行し、ガベージ コレクション時に解放することが可能です。

http://caml.inria.fr/pub/docs/manual-ocaml/manual033.html

于 2013-08-08T22:12:19.263 に答える