R パッケージ用に C で関数を開発していますが、ガベージ コレクションされていない手動で割り当てられたメモリで R 数値ベクトルを初期化する必要があります。
標準関数 allocVector(REALSXP, XXX) がメモリを割り当て、オブジェクトを初期化します。私はすでに割り当てられたメモリを持っています。このメモリで R オブジェクトを初期化し、それをユーザー空間に返す必要があります。
私が従おうとしているアルゴリズム
自分でメモリを割り当てます(実際にはメモリマップファイルです)
R オブジェクト (標準の R 数値ベクトル) をこのメモリに入れます (どのように?)
ガベージコレクターがそれを収集しようとするのを防ぎます (どのように?)
このオブジェクトのファイナライザーを登録する
Return R オブジェクト ユーザーはそれを使用できます
オブジェクトが参照されなくなったという通知を受け取り、オブジェクトの割り当てを解除します