如何测试两个数组是否指向同一个内存块?
例如,我想要一个函数 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/