go escape_level 源码
golang escape_level 代码
文件路径:/test/escape_level.go
// errorcheck -0 -m -l
// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Test indirection level computation in escape analysis.
package escape
var sink interface{}
func level0() {
i := 0 // ERROR "moved to heap: i"
p0 := &i // ERROR "moved to heap: p0"
p1 := &p0 // ERROR "moved to heap: p1"
p2 := &p1 // ERROR "moved to heap: p2"
sink = &p2
}
func level1() {
i := 0 // ERROR "moved to heap: i"
p0 := &i // ERROR "moved to heap: p0"
p1 := &p0 // ERROR "moved to heap: p1"
p2 := &p1
sink = p2
}
func level2() {
i := 0 // ERROR "moved to heap: i"
p0 := &i // ERROR "moved to heap: p0"
p1 := &p0
p2 := &p1
sink = *p2
}
func level3() {
i := 0 // ERROR "moved to heap: i"
p0 := &i
p1 := &p0
p2 := &p1
sink = **p2
}
func level4() {
i := 0 // ERROR "moved to heap: i"
p0 := &i // ERROR "moved to heap: p0"
p1 := &p0
p2 := p1 // ERROR "moved to heap: p2"
sink = &p2
}
func level5() {
i := 0 // ERROR "moved to heap: i"
p0 := &i // ERROR "moved to heap: p0"
p1 := &p0
p2 := p1
sink = p2
}
func level6() {
i := 0 // ERROR "moved to heap: i"
p0 := &i
p1 := &p0
p2 := p1
sink = *p2
}
func level7() {
i := 0 // ERROR "moved to heap: i"
p0 := &i
p1 := &p0
// note *p1 == &i
p2 := *p1 // ERROR "moved to heap: p2"
sink = &p2
}
func level8() {
i := 0 // ERROR "moved to heap: i"
p0 := &i
p1 := &p0
p2 := *p1
sink = p2
}
func level9() {
i := 0
p0 := &i
p1 := &p0
p2 := *p1
sink = *p2 // ERROR "\*p2 escapes to heap"
}
func level10() {
i := 0
p0 := &i
p1 := *p0
p2 := &p1
sink = *p2 // ERROR "\*p2 escapes to heap"
}
func level11() {
i := 0
p0 := &i
p1 := &p0
p2 := **p1 // ERROR "moved to heap: p2"
sink = &p2
}
相关信息
相关文章
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
7、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦