Ответ
Стек — это область памяти, где хранятся локальные переменные и вызовы методов. Выделяется и освобождается автоматически (LIFO). Быстрый доступ, но ограниченный размер.
Куча (heap) — динамическая память для объектов, созданных через new. Управляется вручную (или GC в Java/Kotlin). Медленнее, но размер гибкий.
Пример:
fun example() {
val stackVar = 42 // на стеке
val heapObj = StringBuilder() // в куче
}
Стек: stackVar удалится после выхода из метода.
Куча: heapObj останется, пока есть ссылки (или GC не очистит).