1 个回答
编译器通过逃逸分析去选择内存分配到堆或者栈是正确的,生命周期不可知的情况包括:
1、指针逃逸:当一个指针被返回给函数的调用者、存储在全局变量中或逃逸到堆上时,编译器无法确定指针的生命周期。
2、闭包:当一个函数内部定义的闭包引用了外部的变量,并且这个闭包被返回、存储在全局变量中或逃逸到堆上时,编译器无法确定闭包的生命周期。
3、并发编程:在并发编程中,如果一个变量被多个 Goroutine 共享访问,并且可能在 Goroutine 之间传递或逃逸到堆上时,编译器无法确定变量的生命周期。
发布于:2个月前 (04-22) IP属地:
我来回答
您需要 登录 后回答此问题!