CreateManagedObject[expr,f]
f[expr]を参照されなくなってから評価する管理されたオブジェクトを作成する.
CreateManagedObject
CreateManagedObject[expr,f]
f[expr]を参照されなくなってから評価する管理されたオブジェクトを作成する.
詳細
- ポインタオブジェクトを期待する関数の多くは,ポインタを含む管理されたオブジェクトを自動的にアンラップする.
- CreateManagedObject[expr,man]は expr を表す新たな管理されたオブジェクトを作成する.これは,ManagedObject man と参照数を共有する.
- アクティブな管理されたオブジェクトしか,参照されなくなったときに解放関数を評価しない.
- 管理されたオブジェクトはUnmanageObjectで非アクティブにすることができる.
例題
すべて開く すべて閉じる例 (2)
考えられる問題 (3)
Withを使っていると管理されたオブジェクトの解放が早すぎることがある.そうなると,本体でシンボルが最後に使用された後に参照数が減少する:
With[{man = CreateManagedObject[foo, Echo["freed"]&]},
EchoLabel["func"][man["Value"]]
]代りにModuleを使うと参照数は最後にしか減少しない:
Module[{man = CreateManagedObject[foo, Echo["freed"]&]},
EchoLabel["func"][man["Value"]]
]func[expr]は管理されたオブジェクトの参照数がゼロになると評価される.ただし,expr は管理された式の外に存在する場合があり,その参照数が名目上ゼロになった後でも続行することができる:
With[{man = CreateManagedObject[foo, Echo]}, man["Value"]]参照数が0に見えるがそれはOutのためではないことがよくある:
CreateManagedObject[foo, Echo];Outで管理されたオブジェクトにアクセスする:
%テクニカルノート
-
▪
- 外部関数
関連するガイド
-
▪
- FFI
テキスト
Wolfram Research (2023), CreateManagedObject, Wolfram言語関数, https://reference.wolfram.com/language/ref/CreateManagedObject.html.
CMS
Wolfram Language. 2023. "CreateManagedObject." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/CreateManagedObject.html.
APA
Wolfram Language. (2023). CreateManagedObject. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/CreateManagedObject.html
BibTeX
@misc{reference.wolfram_2026_createmanagedobject, author="Wolfram Research", title="{CreateManagedObject}", year="2023", howpublished="\url{https://reference.wolfram.com/language/ref/CreateManagedObject.html}", note=[Accessed: 16-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_createmanagedobject, organization={Wolfram Research}, title={CreateManagedObject}, year={2023}, url={https://reference.wolfram.com/language/ref/CreateManagedObject.html}, note=[Accessed: 16-September-2026]}