首页 > 文章列表 > 使用引用而不实际分配变量是否安全?

使用引用而不实际分配变量是否安全?

163 2024-02-14
问题内容

我想在切片中保留引用列表,但我无法找到任何在线资源来解释在不分配给变量的情况下保留引用是否安全?

我的意思是,操作系统是否有可能在引用的地址中写入程序员不期望的内容?

这里是一个示例代码:

type ListItem [8]uint64

list := make([]*ListItem, 0)

list = append(list, &ListChunk{})
list = append(list, &ListChunk{})
list = append(list, &ListChunk{})

换句话说,是否可以保证名为 list 的切片中的项目在程序运行时保持不变,无论运行多长时间?


正确答案


在您的情况下可能不会(引用将保持不变),但这还取决于您的程序对其执行的操作:

Go 运行时不会在程序的生命周期内更改存储在切片中的引用(指针),但有一个条件: -您不会在函数中重新分配切片或其元素指针([8]uint64 的数组)。只要您不为切片的元素重新分配新值,引用就会保持不变。