julia - 如何测试两个数组是否共享同一个内存块?

标签 julia

如何测试两个数组是否指向同一个内存块?
例如,我想要一个函数 foo这将像这样工作:

a = rand(10) # Float64 array with 10 elements
b = copy(a) # b == a is true, but b === a is false
ar = reinterpret(Float32,a)
foo(ar,a) # I'd like this to return true
foo(reinterpret(Float64,ar),b) # I'd like this to return false, even if reinterpret(Float64,ar) == b

我已经测试过 reinterpret(Float64,ar) === a但它返回 false .

对于子阵列,这是通过 parent(subofA) === A 实现的。 ,返回 true .但我可以为重新解释的数组引发相同的结果。

最佳答案

reinterpret仅更改同一内存块的类型解释,因此解决方案是比较指针:foo(x,y) = pointer(x) == pointer(y) .

关于julia - 如何测试两个数组是否共享同一个内存块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43532064/

相关文章:

julia - 理解 BigInt 的使用

julia - BigFloats的rationalize()有上限吗?

arrays - Julia : create an arrays in for loop

julia - Flux 的自定义渐变而不是使用 Zygote A.D

julia - LinearAlgebra 包中的 LDLt 函数是否仅适用于 SymTriDiagonal 矩阵?

julia - 如何简洁地计算 Julia 数组中行项的差异百分比

julia - Julia 中 `in` 的矢量化形式

io - 读取 cmd 以流式传输到 Julia 中的 BSON

docker - 使用 docker 的 Julia 集群

performance - fun(n::Integer) 和 fun(n::T) 其中 T<:Integer 在性能/代码生成方面有区别吗?