Предположительно, вы имеете в виду куча с точки зрения выделения памяти, а не с точки зрения структуры данных (термин имеет несколько значений).
Очень простое объяснение состоит в том, что heap - это часть памяти, в которой находится , динамически выделенная память (то есть память, выделенная через malloc
). Память, выделенная из кучи, будет выделяться до тех пор, пока не произойдет одно из следующих событий:
- Память
free
'd
- Программа завершается
Если все ссылки на выделенную память потеряны (например, вы больше не сохраняете указатель на нее), у вас есть то, что называется утечка памяти . Это место, где память все еще была выделена, но у вас больше нет простого доступа к ней. Утечка памяти не может быть возвращена для будущих распределений памяти, но когда программа завершится, операционная система освободит память.
Сравните это с stack memory, в которой находятся локальные переменные (определенные в методе). Память, выделенная в стеке, обычно живет только до тех пор, пока функция не вернется (есть некоторые исключения, например статические локальные переменные).
Вы можете найти больше информации о куче в этой статье .