Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C++ Что такое стек а что такое куча. Можете объяснить очень подробно и привести примеры.

вася васяук Ученик (197), на голосовании 7 лет назад
Голосование за лучший ответ
kaiu Высший разум (120236) 7 лет назад
При динамическом распределении памяти объекты размещаются в т. н. «куче» (англ. heap): при конструировании объекта указывается размер запрашиваемой под объект памяти, и, в случае успеха, выделенная область памяти, условно говоря, «изымается» из «кучи», становясь недоступной при последующих операциях выделения памяти.
https://ru.wikipedia.org/wiki/Динамическое_распределение_памяти

В компьютерных науках ку́ча — это специализированная структура данных типа дерево, которая удовлетворяет свойству кучи: если B является узлом-потомком узла A, то ключ (A) ≥ ключ (B). Из этого следует, что элемент с наибольшим ключом всегда является корневым узлом кучи
https://ru.wikipedia.org/wiki/Куча_(структура_данных)

Стек (англ. stack — стопка; читается стэк) — абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»).
https://ru.wikipedia.org/wiki/Стек

Не нравиться подробности? Ну так правь вики и другим польза будет.
Икар КабачковПросветленный (24954) 7 лет назад
является ли стек частью кучи?
kaiu Высший разум (120236) Ну, у нас говорили про кучу именно в "Динамическое_распределение_памяти". Изначально еще с первых процессоров, когда я помню было всего 16-64 КИЛОбайта памяти, стек рос с конца, то бишь если мы память выделяем с начала, то стек с конца и когда-то они встретятся :) Это классическая реализация, но вполне допускаю, что могут быть системы с независимы стеком и память, да что угодно может быть, но отвечать надо так, как дает препод, а мне важнее понимание.
Просветленный (24335) 7 лет назад
Ассемблер тебе поможет в этом разобраться)
Грубо говоря стек это участок в памяти где образуются (выделяются) всякие данные. Он ограничен, сильно.
А выделение из кучи это когда ОС дает программе кусочек памяти из незанятой памяти системы. Стек обычно быстрее, но он маленький
Олег Городской Мыслитель (9672) 7 лет назад
Полагаю, интересует конкретное применение?

Объекты, размещаемые на стеке - это когда в коде опредляется переменная, хранящая объект или что-то другое.
int i;
float f=5.0;
MyClass myClass;
int array[10];

Объекты, размещённые в куче - это через malloc() или new.
MyClass *pMyClass = new MyClass;
int *array = new int[10];
ivtst1 Просветленный (30514) 7 лет назад
Куча, это произвольный выделенный кусок памяти в ОЗУ. А стек, это фиксированный небольшой кусок памяти, с которым процессор может работать специальными командами для стека. С кучей они не работают
Похожие вопросы