我们知道,给定一个 Ptr{T}
,通常可以使用 unsafe_load(ptr, [index])
将 T
类型的内容从引用的内存复制到 Julia 对象中。引用的内存可以安全地释放。
那如果我用unsafe_pointer_to_objref
来创建一个引用,在以下两种情况下会怎样?
1、给定的 Ptr{T}
是由julia分配的,此时创建引用是否会发生内存复制?
2、给定的 Ptr{T}
不是由julia分配的,是由某个C库分配的。此时创建引用是否会发生内存复制?创建引用后,如果C库将内存释放,是否会导致julia的引用对象崩溃掉?
求各路大神答疑。
不会。
这种情况不应该使用 unsafe_pointer_to_objref
, 结果是UB。
明白了。谢谢,谢谢。