在这个问题中,展示了如何获取可变地址的内存地址。
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)
如何获取不可变对象的内存地址?
不可变对象不一定存在于内存中(它们可能存储在寄存器中,或者根本不存在),因此您无法获取它们的地址。澄清示例:
\n问“数组a = [0]位于内存中的哪里?”是有意义的。这是有道理的,因为a = [0]它是一个特定的数组,分配一次,并且必须位于内存中的特定位置,因为该数组/内存的所有观察者都必须能够看到有人修改了它:如果有人修改了它,那么就有a[1] = 1一个内存位置也就是从保持 value 变为0value 1。
问“整数0位于内存中的哪里?”是没有意义的。它并不存在于任何特定的\xe2\x80\x94有很多实例0到处都有许多 的实例,并且它们都是“相同的零”,因为它们是不可区分和可互换的。无法将零值更改为另一个值,只能更改某个可变容器(带有位置)引用的值。
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |