slice分配在堆上还是栈上
参考解析
题目来源:京东
答案:
有可能分配到栈上,也有可能分配到栈上。当开辟切片空间较大时,会逃逸到堆上。
通过命令go build -gcflags "-m -l" xxx.go
观察golang是如何进行逃逸分析的
package main
func main() {
_ = make([]string, 200) //1
//_ = make([]string, 20000) //2
}
//output
//1. make([]string, 200) does not escape
//2. make([]string, 20000) escapes to heap