Тафовутҳои байни идоракунии хотира дар стек ва дар куча дар контексти барномасозӣ-ро шарҳ диҳед.
sobes.tech AI
Ҷавоб аз AI
Барномаинависӣда, хотира одатан икки асосий усул билан бошқарилади: стек ва куч.
Стек — бу, функцияларнинг маҳаллий ўзгартувчилари ва параметрлари сақланадиган хотира майдонидир. У LIFO (сўнг кирган, биринчи чиқади) принципига асосланган. Стекда хотира автоматик равишда ажратилади ва чиқарилади функцияларга кириш ва чиқишда, бу жуда тез ва самарали. Аммо, стекнинг ҳажми чекланган ва у катта объектлар ёки динамик ҳаёт даврига эга маълумотларни сақлай олмайди.
Куч (Heap) — бу, динамик ажратиш учун хотира майдони, у ерда объектлар яратилади ва уларга ҳавола бўлса, умрлари давомида яшайди (Goда, мусобақачи автоматик равишда ишлатилмайдиган хотирани озод қилади). Кучда хотира қўлда ёки автоматик равишда ажратилади ва озод қилинади, бу стекдан секинроқ, аммо объектларнинг ҳар қандай ҳаёт даври ва катта ҳажмда яратилишини имконият беради.
Goда мисол:
func мисол() {
x := 10 // x ўзгартувчиси стекда сақланади
p := new(int) // кучда хотира ажратиш
*p = 20
}
Бу ерда, x маҳаллий ўзгартувчи стекда, p эса кучдаги хотирага ишора қилади.
Хулоса қилиб айтганда:
- Стек: тез ажратиш/озод қилиш, чекланган ҳажм, маҳаллий маълумотлар.
- Куч: динамик ажратиш, катта ҳажм, объектларнинг ҳаёт даврини бошқариш.