一个简单的问题,但我在互联网上看不到任何答案。那么,如何获得Kotlin中对象的地址?
答案 0 :(得分:5)
要在调试期间识别对象,请使用System.identityHashCode()
。
无法在Kotlin / JVM上获得对象的地址,并且它也可以随着GC的运行而改变,因此不能用于标识对象。
答案 1 :(得分:1)
JVM中的Kotlin不支持指针,因此(除了一些带有sun.misc.Unsafe类的琐碎玩意儿之外),无法获取变量的地址。
但是,Kotlin / Native(至少早在2018年1月)确实支持指针以使其能够与C代码互操作。以下程序显示了如何获取已在本机堆上分配的变量的地址。似乎无法在特定地址分配变量。
// Kotlin Native v0.5
import kotlinx.cinterop.*
fun main(args: Array<String>) {
val intVar = nativeHeap.alloc<IntVar>()
intVar.value = 42
with(intVar) { println("Value is $value, address is $rawPtr") }
nativeHeap.free(intVar)
}
导致:
Value is 42, address is 0xc149f0