Стек и куча в Go. Escape analysis.

Ответ

Локальные переменные обычно на стеке; при "уходе" за пределы функции (возврат указателя, замыкание, сохранение в глобальной переменной) компилятор делает escape - выделение на куче. Escape analysis: go build -gcflags="-m" показывает, что уходит на кучу. Цель - минимизировать аллокации на куче для снижения нагрузки на GC. Указатели на стеке не должны сохраняться после возврата.

// escape: return &x
// no escape: return x
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.