Що таке стек та купа?

Купа – це область пам'яті, де дані можуть виділятися динамічно під час виконання програми. На відміну від стека, де дані видаляються автоматично після завершення функції, дані в купі залишаються, доки не будуть явно видалені.

Використання: Пам'ять стека використовується для статичного виділення пам'яті, наприклад, локальних змінних усередині функцій. Пам'ять купи використовується для динамічного виділення пам'яті, підходить для об'єктів або даних, розмір яких може змінитися під час виконання або час життя перевищує область дії одного виклику функції.

Стек одна з основ організації та зберігання даних. При цьому вона безпосередньо не взаємодіє з жодною мовою програмування. Стек — це спосіб формування структури даних, а структура — варіант зберігання інформації: списків, «гілок», схем, множин, таблиць.

Неважливо, чи був об'єкт створений і присвоєний локальною змінною чи створений як змінна член іншого об'єкта, він зберігається в купі. У разі коли локальна змінна примітивного типу, вона зберігається у стеку потоку.

Під час роботи програми в оперативній пам'яті виділяється СТЕК (з невеликим розміром) до нього завантажується сама програма, ця програма може працювати з даними великого розміру і СТЕК їй вже недостатньо. Для таких цілей ці дані розміщують у купі і там же їх обробляють.

Купа – це сховище пам'яті, також розташоване в ОЗУ, яке допускає динамічне виділення пам'яті і не працює за принципом стека: це просто склад для ваших змінних. Коли ви виділяєте в купі ділянку пам'яті для зберігання змінної, до неї можна звернутися не тільки в потоці, але й у всьому додатку.

Стек працює швидше, оскільки шаблон доступу дозволяє легко виділяти та звільняти пам'ять з нього (покажчик/ціле число просто збільшується або зменшується), у той час як купа має набагато складніший облік, пов'язаний з виділенням або звільненням.

Стек – спочатку абстрактний тип даних. У розмовній мові використовується для позначення списку технологій, які використовує розробник чи компанія. Приклад: "Наш стек – HTML/CSS, JavaScript, React". Соцзабез — співбесіда.