C++ da dinamik xotira bilan ishlash
C++ xotirani ajratish va bo'shatishning o'ziga xos mexanizmiga ega - bu funksiyalar yangi va o'chirish. Foydalanish misoli yangi: int * p = new int; // 1000 e-ths uchun xotira ajratish, ya'ni. funksiyadan foydalanganda yangi ko'rsatgichni tashlash va foydalanishga hojat yo'q sizeof(). Tanlovni bo'shatish yangi xotira quyidagi qo'ng'iroq orqali boshqariladi: delete p; Agar bitta element uchun xotira ajratish kerak bo'lsa, u holda int * q = new int dan foydalanishingiz mumkin; yoki int * q = new int(10); // ajratilgan int 10 qiymati bilan ishga tushiriladi, bu holda o'chirish quyidagicha ko'rinadi: delete q;
C++ uchta asosiy turni qo'llab-quvvatlaydi ajratish(yoki ko'proq "tarqatishlar") xotira, ulardan ikkitasi biz allaqachon tanish:
Statik xotirani ajratish va oʻzgaruvchilar uchun tutadi. Xotira dastur boshida bir marta ajratiladi va butun dastur davomida saqlanadi.
Xotirani avtomatik taqsimlash va uchun bajariladi. Ushbu o'zgaruvchilarni o'z ichiga olgan blok kiritilganda xotira ajratiladi va undan chiqqanda olib tashlanadi.
Xulosa
Agar biz (dasturni yozish vaqtida) bizga qancha xotira kerakligini oldindan bilmasak (masalan, massiv hajmi dastur ishlayotgan vaqtda foydalanuvchi kiritgan narsaga bog'liq) va dinamik ravishda ajratilgan xotiradan foydalanish kerak. katta hajmdagi ma'lumotlar bilan ishlashda.
"Uyma" deb ham ataladigan dinamik xotira operatsion tizim resurslaridan dastur talabiga binoan aniq ajratiladi va ko'rsatgich tomonidan boshqariladi. U avtomatik ravishda ishga tushirilmaydi va aniq ozod qilinishi kerak. Statik va avtomatik xotiradan farqli o'laroq, dinamik xotira amalda cheklanmagan (faqat operativ xotira hajmi bilan cheklangan) va dastur ishlayotgan vaqtda o'zgarishi mumkin.
s da dinamik xotira bilan ishlash
S tilida dinamik xotira bilan ishlash uchun quyidagi funksiyalardan foydalaniladi: malloc, calloc, bepul, realloc. Keling, ularni batafsil ko'rib chiqaylik.
Ajratish (xotirani ushlab turish): void *malloc (size_t hajmi);
Sifatida kirish parametri funksiya ajratiladigan xotira hajmini oladi. Qaytish qiymati yig'ilgan xotira qismiga ko'rsatgichdir. Agar operatsion tizim xotirani ajrata olmasa (masalan, xotira etarli bo'lmasa), malloc 0 ni qaytaradi.
Dinamik ravishda ajratilgan xotira bilan ishlashni tugatgandan so'ng, uni bo'shatish kerak. Shu maqsadda u ishlatiladi bepul funksiya, OS boshqaruvi ostida xotirani qaytaruvchi: void free(void *ptr);
Agar dastur tugagunga qadar dinamik xotira bo'shatilmasa, u holda dastur tugashi bilan avtomatik ravishda bo'shatiladi. Biroq, bu keraksiz xotirani aniq ajratish uchun yaxshi dasturlash uslubining belgisidir.
Foydalanilgan adabiyotlar ro’yxati
1. Karimov I. A. Barkamol avlod orzusi //Nashr uchun mas`ul T. Risqiyev.-T.: “Sharq” nashriyoti—matbaa konserni, 1999.-184 b.
2. “Kadrlar tayyorlash Milliy dasturi” // Barkamol avlod- O`zbekiston taraqqiyotining poydevori.-T.: “Sharq” nashriyoti—atbaa konserni, 1997. –
3. Дмитрий Мусин. Самоучитель Python. 2015 г
4. К.Ю. Поляков, В.М. Гуровиц.
tami.uz
https://studylib.net/
youtube.com
Dostları ilə paylaş: |