go語言的局部變量是在棧中還是堆中?

先看這兩個代碼: 這兩段代碼只是調用的打印函數不一樣,但是局部變量一個放在堆中,一個是放在棧中的。 直接說原因:go語言編譯器會做逃逸分析,分析局部變量的作用域是否逃出了函數的作用域,要是沒有就放到棧上,要是超出了函數的作用域就自動放到堆上。fmt.println函數使局部變量的作用域超出了函數的作用域,所以局部變量是在堆上。而println是內聯函數,並沒有使局部變量的作用域逃出函數的作用域,所
相關文章
相關標籤/搜索