代码之家  ›  专栏  ›  技术社区  ›  moo.duwayne

保留引用而不将数据分配给实际变量是否安全?

  •  1
  • moo.duwayne  · 技术社区  · 2 年前

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

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

    下面是一个示例代码:

    type ListItem [8]uint64
    
    list := make([]*ListItem, 0)
    
    list = append(list, &ListChunk{})
    list = append(list, &ListChunk{})
    list = append(list, &ListChunk{})
    

    换句话说,是否保证切片中名为 list 在程序运行时保持不变,不管运行需要多长时间?

    0 回复  |  直到 2 年前
        1
  •  -3
  •   Achref Nasri    2 年前

    在您的情况下,可能没有(引用将保持不变),但这也取决于您的程序对它做了什么:

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