Используется для статического выделения памяти

Чаще всего принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху, нужно снять верхнюю (LIFO - last in, first out - последний пришел, первый вышел).

Благодаря своей природе процесс добавления и получения данных из стека очень быстрый, так как мы можем только класть что-то наверх стопки и брать можем тоже что-то сверху

Из вышесказанного вытекает ограничение стека - данные, которые мы храним на стеке, должны иметь фиксированный размер, известный во время компиляции программы (compile time)

Данные на стеке хранятся в Stack frames

Многопоточные приложения могут иметь по стеку на каждый поток

Управление памятью стека - простое и понятное и осуществляется операционной системой

Типичными типами данных, которые хранятся на стеке являются примитивы, типы данных, передающиеся по значению, указатели на данные в куче

Стек может переполниться (знаменитый stack overflow), потому что он имеет ограничение по размеру. Проще всего увидеть это при вызове рекурсивной функции с глубокой вложенностью (в хроме не более 16тыс. фреймов)