生命周期指在程序执行过程中变量存在的时间段。
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 }