你可以用Go"固定"内存中的对象吗?

TSL*_*TSL 6 go

我有一个Go对象,其内存中的地址我想保持不变.在C#中,可以将对象的位置固定在内存中.Go中有没有办法做到这一点?

Den*_*ret 6

保留引用的对象不会移动.没有句柄或间接,你得到的地址是永久性的.

文档:

请注意,与C不同,返回局部变量的地址是完全可以的.与函数关联的存储在函数返回后仍然存在

设置变量时,可以使用&运算符读取该地址,然后传递它.

  • 澄清一下:Go的GC不是压缩GC.它永远不会移动活物体. (8认同)
  • 这是一篇博文(免责声明:我写的),它更仔细地研究了 Go 的转义分析:http://www.scvalex.net/posts/29/ (2认同)