可能で呼びC関数から存ぐ巨大な配列を効率的に?
-
12-09-2019 - |
質問
私は利用されることを考えれば、組み合わせの間に存およびCコードを新しい願います。この呼び出し、Cのコードから存ソフトバンクグループ
external name : type = C-function-name
しかし、そうでも、その他の方法(呼存からC)には複雑な:
static void
call_ocaml_void (const char * name)
{ CAMLparam0 () ;
CAMLlocal1 (ostr) ;
ostr = caml_copy_string (name);
value * func = caml_named_value ("ocaml_puts") ;
if (func == NULL)
puts ("caml_named_value failed!") ;
else
caml_callback (*func, ostr) ;
CAMLreturn0 ;
} /* call_ocaml_void */
(例から ページ)
特にこれはcopyingをご覧ください。
出ないことが可能であれば、そのアクセスできるデータ構造の両面から適切ですか?その機能を合のみポインタの構造が、両言語で読んでくれました。
その目的は、全ての事業存し、そのデータC環境ます。
よろしく!
解決
まずすことができずC malloced値存して抽象タイプです。多くの方が書かれているseverallこと:
- はできません操作する抽象的な価値から存を使用せずに外部で定義された関数はC
- で、ガベージコレクタからない無しといったメモリリーク(またはご利用の外部機能explictly無料ですが、本体を万が一紛失してしまっ部のusefullnessの存)
も利用できるカスタムブロックを含むポインタをする活動も実施しています。このbastract値(前回の場合)ができる追加のコードされたときに呼び出されるカスタムブロックGCedことになるケースを解放Cオブジェクトです。
そのための配列での整数/char/floatのbiggaray図書館"、ポインタのpは、既に割り当てられたCまたはFortran配列に包まれ、返されるCamlとして大きな配列を利用alloc_bigarray やalloc_bigarray_dimsます。"見る マニュアル
所属していません StackOverflow