csworkman

个人博客

变量逃逸分析经典案例

2023-2-6 Mr Chang golang

var global *int
func f() {
    var x int
    x = 1
    global = &x
}
func g() {
    y := new(int)
    *y = 1
}


函数f中的x变量虽然是在内部调用的比变量,但是全局变量global调用了内存地址,导致变量逃逸没有在}结束的位置被销毁。此时的x必须存放在堆内存中,相反y在g函数返回的时候不在被调用,y变量可以存放在栈内存当中

评论(0) 浏览(1011)