Julia 中不可变对象的地址

3 memory-address julia

这个问题中,展示了如何获取可变地址的内存地址。

julia> a = [1, 2, 3]
3-element Array{Int64,1}:
 1
 2
 3

julia> s=repr(UInt64(pointer_from_objref(a)))
"0x000000001214ce80"
Run Code Online (Sandbox Code Playgroud)

如何获取不可变对象的内存地址?

Osc*_*ith 7

不可变对象不一定存在于内存中(它们可能存储在寄存器中,或者根本不存在),因此您无法获取它们的地址。澄清示例:

\n
    \n
  • “数组a = [0]位于内存中的哪里?”是有意义的。这是有道理的,因为a = [0]它是一个特定的数组,分配一次,并且必须位于内存中的特定位置,因为该数组/内存的所有观察者都必须能够看到有人修改了它:如果有人修改了它,那么就有a[1] = 1一个内存位置也就是从保持 value 变为0value 1

    \n
  • \n
  • “整数0位于内存中的哪里?”是没有意义的。它并不存在于任何特定的\xe2\x80\x94有很多实例0到处都有许多 的实例,并且它们都是“相同的零”,因为它们是不可区分和可互换的。无法将零值更改为另一个值,只能更改某个可变容器(带有位置)引用的值。

    \n
  • \n
\n