Как работает goroutine stack growth?

Middle
186 просмотров
AFK Offer AI

Горутина стартует с маленьким стеком (2-8 KB). При вызове функции проверяется stackguard — хватает ли места. Если нет, runtime выделяет новый стек в 2 раза больше, копирует старый, обновляет все указатели на стек. Это copyable stacks. Стек может и уменьшаться при GC если используется меньше четверти. Поэтому адреса на стеке нестабильны.

Следующий вопрос

Что выведет: a := [3]int{1,2,3}; b := a; b[0] = 99; fmt.Println(a[0])?