参考答案
结论:内存逃逸指局部变量本应栈分配,因生命周期超出函数而被编译器分配到堆上。核心要点:Go编译器做静态逃逸分析,若变量在函数返回后仍被引用则逃逸;常见情况:返回变量指针、被闭包捕获、赋值给接口、切片/map动态增长导致底层数组移动。原理:栈分配随函数返回自动回收,高效;堆分配需GC扫描回收,增加开销。示例:func New()*int{x:=1; return &x} 中x逃逸到堆。优化:减少指针传递、避免闭包滥用可降低逃逸,提升性能。面试可结合pprof或-gcflags=-m分析。