arrays - Go 如何保证元素指针对数组和切片有效?
问题描述
当您在数组或切片上使用索引器作为回报时,您将获得变量,以便您可以获取它的地址。我想知道这怎么可能,因为数组/切片可能比目标变量嵌套更多:
// ptr declaration here
{
// array declaration here
ptr = &array[0];
}
在数组的情况下,我看到一个问题,即数据在堆栈上,使用切片,在堆上分配它并不能自动解决问题,因为 GC 可以删除整个切片,除非获取元素链接到切片本身的地址(从而防止释放内存)。
示例:当不能保证指针的有效性时会发生什么——假设我的数组是颜色的集合。我选择一个元素,获取它的地址,整个数组被删除(因为它超出了范围),我检查了元素的值,它是 3.14。或“你好世界”。或者也许green
。由于无法保证它可能是位于给定地址的任何东西。
解决方案
Go 编译器和 Go 垃圾收集器保证在不再使用之前不会释放内存。
要学习垃圾收集的基础知识,Go 团队推荐了《垃圾收集手册:自动内存管理的艺术》。
请参阅Go 博客:Getting to Go:Go 的垃圾收集器之旅了解一些历史。
推荐阅读
- mysql - 比较子查询中的两列值
- java - HQL Hibernate INNER JOIN SUBQuery
- reactjs - 测试 asyncConnect 的方法
- python - 指数平滑 Excel
- slack - 一种从 URL 打开 Slack Search UI(在浏览器中)的方法
- arrays - 与每个矩阵中的两列相交
- angular - 角嵌套子路由不路由
- python-3.x - Pandas 中基于 groupby 的数据透视表
- jquery - Use JQUERY DataTable with Bootstrap
- python - Python dict / list assignment [] = () 有效但 () = [] 无效