Go 的 GC 是否将整个对象保存在内存中,同时保留指向某个字段的内部指针?
在这样的代码中,这会导致内存泄漏吗?或者 go 的 GC 是否“足够聪明”注意到不再需要对象的其余部分并将其从内存中清除?
package main
import (
"fmt"
)
const aLot = 500000000
func getInteriorPointer() *int {
type bigStruct struct {
someBigThing [aLot]int
smallThing int
}
b := bigStruct{smallThing: 3}
return &b.smallThing
}
func main() {
p := getInteriorPointer()
// keep using p in the rest of the app,
// never using someBigThing from the struct
fmt.Println(*p)
}
www说
LEATH
相关分类