Stack yoki mahalliy xotira Mahalliy yoki stek o'zgaruvchilari e'lon qilingan o'zgaruvchilardir funksiya ichida. Bunday o'zgaruvchilar uchun xotira apparat stekida ajratilgan, 2.3.2-bo'limga qarang. Xotira funksiya yoki blok kiritilganda ajratiladi va funksiya yoki blokdan chiqqanda bo'shatiladi. Bunday holda, xotirani qo'lga olish va chiqarish deyarli bir zumda sodir bo'ladi, chunki. kompyuter faqat stekning yuqori qismi manzilini o'z ichiga olgan registrni o'zgartiradi.
Mahalliy o'zgaruvchilardan rekursiyada foydalanish mumkin, chunki funksiya qayta kiritilganda stekda mahalliy o'zgaruvchilarning yangi to'plami yaratiladi va oldingi to'plam yo'q qilinmaydi. Xuddi shu sababga ko'ra, parallel dasturlashda iplardan foydalanganda mahalliy o'zgaruvchilar xavfsizdir (2.6.2 bo'limiga qarang). Dasturchilar funksiyaning bu xususiyatini chaqirishadi qayta kirish, ingliz tilidan. qayta kiritish mumkin - qayta kiritish imkoniyati. Bu dastur ishonchliligi va xavfsizligi nuqtai nazaridan juda muhim sifatdir! Statik o'zgaruvchilar bilan ishlaydigan dastur bu xususiyatga ega emas, shuning uchun statik o'zgaruvchilarni himoya qilish uchun siz foydalanishingiz kerak. sinxronizatsiya mexanizmlari(2.6.2 ga qarang) va dastur mantig'i ancha murakkablashadi. Agar siz mahalliy o'zgaruvchilar bilan ishlasangiz, har doim global va statik o'zgaruvchilardan foydalanishdan qochishingiz kerak.
Mahalliy o'zgaruvchilarning kamchiliklari ularning afzalliklarini kengaytirishdir. Mahalliy o'zgaruvchilar funktsiya kirganda yaratiladi va u chiqqanda yo'qoladi, shuning uchun ularni bir nechta funktsiyalar o'rtasida taqsimlangan ma'lumotlar sifatida ishlatib bo'lmaydi. Bundan tashqari, apparat stekining o'lchami cheksiz emas, stek bir vaqtning o'zida to'lib ketishi mumkin (masalan, chuqur rekursiya paytida), bu dasturning halokatli tugashiga olib keladi. Shuning uchun mahalliy o'zgaruvchilar katta bo'lmasligi kerak. Xususan, katta massivlarni mahalliy o'zgaruvchilar sifatida ishlatib bo'lmaydi.
Dinamik xotira yoki yig'ma
Statik va stek xotirasidan tashqari, xotiraning deyarli cheksiz resursi ham mavjud bo'lib, u deyiladi. dinamik, yoki uyum(yig'in). Dastur dinamik xotiraning kerakli o'lchamdagi maydonlarini olishi mumkin. Ishlatilgandan so'ng, dinamik xotiraning ilgari olingan qismini bo'shatish kerak.
Dinamik xotira uchun ajratilgan joy virtual xotira Statik xotira va stek o'rtasidagi jarayon. (Virtual xotira mexanizmi 2.6-bo'limda muhokama qilingan.) Odatda, stek yuqoriroq virtual xotira manzillarida joylashgan va manzillar kamayishi yo'nalishi bo'yicha o'sadi (2.3-bo'limga qarang). Dastur va doimiy ma'lumotlar pastki manzillarga joylashtirilgan, statik o'zgaruvchilar yuqorida joylashgan. Statik o'zgaruvchilar ustidagi va stek ostidagi bo'sh joy dinamik xotira bilan band: