猿问

golang 闭包会内存泄漏吗?

假设我有这个闭包函数


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

去构建-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

这仍然是内存安全的吗?或者我的内存分配检查可能缺少一些东西?


互换的青春
浏览 145回答 1
1回答

慕斯709654

不,闭包不会泄漏内存。
随时随地看视频慕课网APP

相关分类

Go
我要回答