UnmanageObject
UnmanageObject[man]
管理されたオブジェクトにラップされたメモリの所有権を取得する.
詳細
- man はManagedObjectまたはコンパイルされたコードの"Managed"型のオブジェクトである.
- コンパイルされたコードでは,UnmanageObjectは型シグネチャ {"Managed"::[t]}t を持つ.
- UnmanageObject[man]は管理されたオブジェクト man を変更可能に無効化する.コンパイルされたコードで無効化された後に man を再度使うとランタイムエラーになる.
- UnmanageObjectは,オブジェクトへの長期的な参照を保持する外部コードにオブジェクト渡す際に使うことができる.
例題
すべて開くすべて閉じる例 (2)
スコープ (3)
管理されたオブジェクトが参照されなくなると解放関数が評価される:
管理されたオブジェクトが管理されていなければ解放関数は評価されない:
管理されたオブジェクトはUnmanageObjectによって無効にされ,スコープの外に出ても解放されない.管理されていないオブジェクトを作成する関数をコンパイルする:
オブジェクトをスコープの外に出す前にこれを管理されなくする:
管理されたオブジェクトを管理されなくすることでコンテンツを事実上借用し,その後それを含む新たな管理されたオブジェクトを作ることができる.管理対象のC配列を作るための関数をコンパイルする:
特性と関係 (2)
素のメモリを割り当てる関数は,通常,管理されたオブジェクトを返す:
ポインタは管理されていないので,メモリが使われなくなったらRawMemoryFreeを呼ぶ:
UnmanageObjectへの呼出しが不要になるように,LibraryFunctionDeclarationで宣言された関数で管理されたオブジェクトのラッパーを自動的にはずす:
テキスト
Wolfram Research (2022), UnmanageObject, Wolfram言語関数, https://reference.wolfram.com/language/ref/UnmanageObject.html.
CMS
Wolfram Language. 2022. "UnmanageObject." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/UnmanageObject.html.
APA
Wolfram Language. (2022). UnmanageObject. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/UnmanageObject.html