UnmanageObject

UnmanageObject[man]

管理されたオブジェクトにラップされたメモリの所有権を取得する.

詳細

  • manManagedObjectまたはコンパイルされたコードの"Managed"型のオブジェクトである.
  • コンパイルされたコードでは,UnmanageObjectは型シグネチャ {"Managed"::[t]}t を持つ.
  • UnmanageObject[man]は管理されたオブジェクト man を変更可能に無効化する.コンパイルされたコードで無効化された後に man を再度使うとランタイムエラーになる.
  • UnmanageObjectは,オブジェクトへの長期的な参照を保持する外部コードにオブジェクト渡す際に使うことができる.

例題

すべて開くすべて閉じる

  (2)

管理されたオブジェクトを作成する:

管理されたオブジェクトはアクティブである:

管理を止めるともとのラップされた値が返される:

管理されたオブジェクトはもはやアクティブではない:

管理されたオブジェクトを作成する関数をコンパイルする:

上記オブジェクトの管理を止める関数をコンパイルする:

管理されたオブジェクトを作成する:

上記オブジェクトの管理を止めると,もとのラップされた値が返される:

管理されたオブジェクトは管理されなくなった段階で無効になるので,続けてUnmanageObjectを呼び出すと失敗する:

スコープ  (3)

管理されたオブジェクトが参照されなくなると解放関数が評価される:

管理されたオブジェクトが管理されていなければ解放関数は評価されない:

管理されたオブジェクトはUnmanageObjectによって無効にされ,スコープの外に出ても解放されない.管理されていないオブジェクトを作成する関数をコンパイルする:

管理されたオブジェクトを作成し,これをスコープ外に出す:

オブジェクトをスコープの外に出す前にこれを管理されなくする:

管理されたオブジェクトを管理されなくすることでコンテンツを事実上借用し,その後それを含む新たな管理されたオブジェクトを作ることができる.管理対象のC配列を作るための関数をコンパイルする:

C配列を管理対象ではなくし,変更し,再度管理対象にする関数をコンパイルする:

管理対象のC配列を作成する:

これを変更し,新たな管理対象のC配列を返す:

特性と関係  (2)

素のメモリを割り当てる関数は,通常,管理されたオブジェクトを返す:

ポインタの管理を止める:

ポインタに値を書き込む:

ポインタは管理されていないので,メモリが使われなくなったらRawMemoryFreeを呼ぶ:

UnmanageObjectへの呼出しが不要になるように,LibraryFunctionDeclarationで宣言された関数で管理されたオブジェクトのラッパーを自動的にはずす:

管理対象のC配列を借用し,ライブラリ関数に渡す前に自動的にラッパーをはずす:

Wolfram Research (2022), UnmanageObject, Wolfram言語関数, https://reference.wolfram.com/language/ref/UnmanageObject.html.

テキスト

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

BibTeX

@misc{reference.wolfram_2024_unmanageobject, author="Wolfram Research", title="{UnmanageObject}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/UnmanageObject.html}", note=[Accessed: 05-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_unmanageobject, organization={Wolfram Research}, title={UnmanageObject}, year={2022}, url={https://reference.wolfram.com/language/ref/UnmanageObject.html}, note=[Accessed: 05-November-2024 ]}