栈和堆for golang

栈和堆for golang

栈和堆都是内存区域。

栈用于存放函数调用过程中的局部变量,由系统自动分配和回收,访问速度快,但空间较小。

堆用于存放生命周期较长或需要动态分配的数据,空间较大,但分配和回收成本较高,通常需要垃圾回收器管理。

在 Go 语言中,变量最终放在栈还是堆并不由newmake决定,而是由编译器的逃逸分析决定。如果变量在函数外部仍然被引用,则会发生逃逸,被分配到堆上;否则通常分配在栈上。

Go 的 GC 主要扫描堆而不是栈