package main import "fmt" // largeArrayEscape 大数组指针返回,触发逃逸 func largeArrayEscape() *[10000]int { arr := new([10000]int) // 8MB(int占8字节),超过栈阈值,逃逸至堆 for i := 0; i < 10000; i++ { arr[i] = i } return arr } // smallArrayNoEscape 小数组,不逃逸 func smallArrayNoEscape() [10]int { var arr [10]int for i := 0; i < 10; i++ { arr[i] = i } return arr // 值拷贝,不逃逸 } func main() { largeArr := largeArrayEscape() fmt.Printf("大数组逃逸:长度=%d\n", len(largeArr)) smallArr := smallArrayNoEscape() fmt.Printf("小数组不逃逸:%v\n", smallArr) }