Страницы

Поиск по вопросам

вторник, 9 октября 2018 г.

Зачем вообще нужна куча?

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


Ответ

Думайте о куче как о структуре, из которой можно в любой момент попросить кусок памяти, и в которую можно в любой момент эту память вернуть.
Со стеком такое не получится: в нём вы можете вернуть объект назад только после того, как все предыдущие объекты вернулись.
Например, в гипотетическом языке, в котором есть лишь стек, вот такая конструкция:
object* function() { aux_object* ao = new aux_object(); object* o = new object(); o -> copySettingsFrom(ao); delete ao; return o; }
была бы невозможна, потому что освободить ao нельзя было бы до освобождения o!

Комментариев нет:

Отправить комментарий