如何测试两个阵列是否共享相同的内存块?

fav*_*vba 3 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
Run Code Online (Sandbox Code Playgroud)

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

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

Gni*_*muc 7

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