生命周期指在程序执行过程中变量存在的时间段。
Go语言中编译器可以选择使用堆或栈上的空间来分配,而不是基于var或new。Go语言有逃逸识别的机制,但每一次变量逃逸都需要额外的内存分配过程。
例如x逃逸:
var global *int
func f() {
var x int
global = &x
}
生命周期指在程序执行过程中变量存在的时间段。
Go语言中编译器可以选择使用堆或栈上的空间来分配,而不是基于var或new。Go语言有逃逸识别的机制,但每一次变量逃逸都需要额外的内存分配过程。
例如x逃逸:
var global *int
func f() {
var x int
global = &x
}