Вопрос: Как работает escape analysis и когда значение уходит в heap?
Go
Junior
Без компании
Вопрос: Как работает escape analysis и когда значение уходит в heap?
Ответы
Компилятор решает, можно ли держать значение на стеке. Если указатель "убегает" за пределы функции (например, возвращается), объект может оказаться в heap.
Пример:
```go
package main
type S struct{ N int }
func makeS() *S {
s := S{N: 1}
return &s // s должен жить после выхода из makeS
}
func main() {
_ = makeS()
}
```
Это не "плохо" само по себе, но важно для производительности в горячих местах.