小编Mun*_*oup的帖子

Golang转义分析中的“leak/leaking param”是什么意思

func main() {
        i1 := 1
    A1(&i1)
}

func A1(i1 *int) *int {
    return i1
}
Run Code Online (Sandbox Code Playgroud)

逃逸分析的结果为

./main.go:18:9: parameter i1 leaks to \~r1 with derefs=0:
./main.go:18:9:   flow: \~r1 = i1:
./main.go:18:9:     from return i1 (return) at ./main.go:19:2
./main.go:18:9: leaking param: i1 to result \~r1 level=0
Run Code Online (Sandbox Code Playgroud)

parameter i1 leaks to \~r1 with derefs=0和是什么意思leaking param: i1 to result \~r1 level=0


首先我尝试 Google ,最相关的结果是escape-analysis-shows-channel-as-leaking-paramgolang escape leaking的评论

“你为什么那么想?” 可以合理地假设泄漏是严重的并且与其阀杆泄漏有关。我正在努力想出一个示例上下文,其中泄漏是一件好事,例如泄漏的水桶、泄漏的油箱、泄漏的泄漏、泄漏的电容器、泄漏的船、泄漏的抽象。对于高性能 Go 专家来说,这可能是显而易见的,但对于我们其他人来说,链接到文档并提供泄漏参数所指内容的简要说明会很有帮助

我也想问同样的问题,但之后就没有再回复了。


然后我尝试阅读打印这些结果的源代码。

compile/internal/escape/leaks.go中,我发现了评论

// 泄漏代表来自参数的一组赋值流

// …

go escape-analysis

9
推荐指数
1
解决办法
3425
查看次数

标签 统计

escape-analysis ×1

go ×1