Julia中如何将存储地址的数值转换为指针及修改指针存储地址
将整数内存地址转换为Julia指针
你要的转换方法就是Ptr{T}构造函数,指定指针指向的元素类型T后,直接传入整数类型的地址即可完成转换,示例如下:
data = [1, 2] ptr = pointer(data) # 类型为"Ptr{Int64}" address = UInt64(ptr) # 类型为"UInt64" # 反转步骤,从地址值重新得到指针 restored_ptr = Ptr{Int64}(address)
注意:指针转换属于不安全操作,Julia不会校验目标地址的内存有效性、访问权限和生命周期,非法访问会直接导致进程崩溃,仅可在你明确知晓地址对应内存的归属和可用状态时使用。
修改指针持有的地址
Julia的Ptr类型是不可变类型,已创建的Ptr实例存储的地址无法直接修改。如果需要得到指向新地址的同类型指针,直接用新的地址值重新构造Ptr实例即可:
# 原有指针 ptr = Ptr{Int64}(0x0000000036f94110) # 修改变量绑定的指针为指向新地址的实例 ptr = Ptr{Int64}(0x000000003ffffff0)
执行完上述赋值后,ptr就会持有你需要的新地址。
内容的提问来源于stack exchange,提问作者snake_man_jim
相关产品推荐
相关产品推荐

