UnmanageObject

UnmanageObject[man]

获取封装在托管对象中的内存的所有权.

更多信息

  • man 可以是 ManagedObject 或编译代码中 "Managed" 类型的对象.
  • 在编译代码中,UnmanageObject 的类型签名为 {"Managed"::[t]}t.
  • UnmanageObject[man] 可变地使托管对象 man 无效. 在编译代码中,在 man 失效后再次使用它会导致运行时错误.
  • UnmanageObject 可以在将对象传递给将对它进行长期引用的外部代码时使用.

范例

打开所有单元关闭所有单元

基本范例  (2)

创建一个托管对象:

托管对象处于激活状态:

取消托管,返回原来封装的值:

托管对象不再处于激活状态:

编译一个创建托管对象的函数:

编译一个取消托管的函数:

创建托管对象:

取消托管,返回原来封装的值:

随后的 UnmanageObject 调用将失败,因为托管对象在取消托管时失效:

范围  (3)

当托管对象不再被引用时,对释放的函数进行计算:

如果取消了对托管对象的托管,则不会对释放的函数进行计算:

托管对象被 UnmanageObject 变为无效,当它们超出范围时不会被释放. 编译用于取消托管的函数:

创建托管对象,并让它超出范围:

在让它超出范围之前取消托管:

托管对象的内容可以通过取消托管然后创建一个新的托管对象来借用. 编译一个用于创建托管 C 数组的函数:

编译一个取消托管、修改然后重新托管 C 数组的函数:

创建托管 C 数组:

对它进行修改,返回一个新的托管 C 数组:

属性和关系  (2)

分配原始内存的函数通常返回一个托管对象:

取消对指针的托管:

往指针中写入一个值:

因为指针不再处于托管状态,当不再使用内存时,调用 RawMemoryFree

托管对象由使用 LibraryFunctionDeclaration 声明的函数自动解除封装,因此无需调用 UnmanageObject

托管 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 语言. 2022. "UnmanageObject." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/UnmanageObject.html.

APA

Wolfram 语言. (2022). UnmanageObject. Wolfram 语言与系统参考资料中心. 追溯自 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 ]}