golang 闭包会不会内存泄露?

will golang closure memory leak?

假设我有这个闭包函数

package main

type A struct {
    Name string
}

func main() {
    s := func(name string) *A {
        return &A{
            Name: name,
        }
    }("checkmate")

    s.Name = "bbb"
}

我已经使用基准测试和 gcflags 进行了测试,这就是结果

cpu: Intel(R) Core(TM) i3-10110U CPU @ 2.10GHz
BenchmarkMain-4         1000000000               0.4877 ns/op          0 B/op          0 allocs/op

go build -gcflags "-m"

./main.go:8:7: can inline main.func1
./main.go:7:6: can inline main
./main.go:12:3: inlining call to main.func1
./main.go:12:3: &A{...} does not escape

这仍然是内存安全的吗?或者我的内存分配检查可能缺少什么?

不,闭包不会泄漏内存。