网站地图    收藏   

主页 > 采坑 > 服务端采坑 > goLang采坑 >

golang中内存地址会变化

来源:未知    时间:2021-05-03 17:48 作者:小飞侠 阅读:

[导读] Go语言中对象的地址可能发生变化, 因此指针不能从其它非指针类型的值生成: funcmain(){varxint=42varpuintptr=uintptr(unsafe.Poiner(x))runtime.GC()varpx*int=(*int)(unsafe.Poiner(p))println(*px)} 当内存发送变化的...

Go语言中对象的地址可能发生变化, 因此指针不能从其它非指针类型的值生成:

func main() {
    var x int = 42
    var p uintptr = uintptr(unsafe.Poiner(&x))

    runtime.GC()
    var px *int = (*int)(unsafe.Poiner(p))
    println(*px)}

当内存发送变化的时候, 相关的指针会同步更新, 但是非指针类型的uintptr不会做同步更新.

同理, cgo中也不能保存Go对象地址.


自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论