В какой части памяти размещается массив данных в процессе выполнения программы?

В Go массивы могут размещаться в разных областях памяти в зависимости от контекста:

Короткий ответ

Что ответить на собеседовании

В Go массивы могут размещаться в разных областях памяти в зависимости от контекста:

Подробный разбор

Ответ с пояснениями

В Go массивы могут размещаться в разных областях памяти в зависимости от контекста:

  • Если массив объявлен как локальная переменная внутри функции и не выходит за её пределы, он обычно размещается в стеке.
  • Если массив создаётся динамически (например, с помощью new или среза, который ссылается на массив), он размещается в куче.

Важно понимать, что срезы в Go — это структура, содержащая указатель на массив, длину и ёмкость. Сам массив может находиться в куче или стеке в зависимости от того, где он создан и как используется.

Пример:

func example() {
    var arr [5]int       // размещается в стеке
    slice := make([]int, 5) // массив в куче
    _ = arr
    _ = slice
}

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее