在Go語言中,變量的存儲可以分為兩種情況:棧上存儲和堆上存儲。
示例:
func main() {
var x int = 10 // x存儲在棧上
fmt.Println(x)
} // x的作用域結束,x被銷毀
示例:
func main() {
var p *int
p = new(int) // 動態分配內存,p指向堆上的int類型變量
*p = 10
fmt.Println(*p)
// 釋放內存
free(p)
}
func free(p *int) {
// 釋放p指向的內存
// ...
}
需要注意的是,Go語言的垃圾回收機制會自動管理堆上的內存,當一個變量不再被引用時,垃圾回收機制會自動回收它所占用的內存空間。因此,大多數情況下,我們無需手動釋放堆上存儲的變量。