"RawPointer" (编译类型)
"RawPointer" (编译类型)
"RawPointer"::[t]
代表一个指向类型为 t 的对象的指针,适合与外部库一起使用.
函数构造
- ToRawPointer 可用于创建一个指针对象,该对象使用分配在栈上的内存,并且在封闭函数返回之前是有效的.
- 除非使用 "Managed" 包装,否则使用 CreateTypeInstance 构造的指针对象不会自动进行内存管理,必须通过 DeleteObject 手动释放.
- CreateTypeInstance["RawPointer"::[type]] 构造一个原始指针.
- CreateTypeInstance["Managed"::["RawPointer"::[type]]] 构造一个内存托管的 C 原始指针.
属性
- 类型 "RawPointer"::[t] 的 ptr 的 Information[ptr,"BaseType"] 给出 "TypeSpecifier"::[t].
- FromRawPointer[ptr] 返回 ptr 所指向的值.
转换
- RawPointer 表达式可以在已编译代码中被转换为原始指针类型.
- 已编译的 "RawPointer" 元素可以被转换为 RawPointer 表达式. 注意,在已编译代码中,原始指针必须通过 CreateTypeInstance 动态分配.
- Cast 可用于在 C 语言数组和指针之间进行相互 bitcast 转换.
- Cast 可用于在指针和不透明的指针之间进行相互 bitcast 转换.
来自表达式
变成表达式
"CArray"
"OpaqueRawPointer"
运行时错误
- 用 FromRawPointer 对指针解引用 (dereferencing) 是一个不安全的操作. 试图对无效指针解引用会导致崩溃.
范例
基本范例 (4)
创建 "RawPointer"::["MachineInteger"],然后对其进行解引用:
技术笔记
历史
2022年引入 (13.1)