【发布时间】:2022-01-13 19:39:57
【问题描述】:
我正在尝试使用 unsafe_load 和 unsafe_wrap 取消引用指针。我发现unsafe_load 工作得很好,但是unsafe_wrap 在取消引用指向可变结构的指针的情况下崩溃。玩具示例:
[mutable] struct Wrapper
data::Int
end
some = Wrapper(1)
ptr = convert(Ptr{Wrapper}, Base.Libc.malloc(sizeof(Wrapper)))
unsafe_store!(ptr, some)
unsafe_load(ptr) # returns Wrapper(1)
unsafe_wrap(Array, ptr, 1) # segfaults if Wrapper is mutable, works fine if not
而且我完全需要unsafe_wrap,因为它不会复制(我需要在malloc 分配的内存中就地执行一些操作)。为什么会出现段错误?
【问题讨论】:
标签: pointers julia dereference