Malloc va calloc funksiyalari yordamida ajratilgan xotira mustaqil ravishda ajratilmaydi. Shunday qilib, dinamik xotira taqsimoti sodir bo'lganda free usuli ishlatiladi. Bu xotirani bo'shatish orqali uni isrof qilishni kamaytirishga yordam beradi.
Ajratilgan xotira qanday qilib bo'shatiladi?
Cda malloc kutubxona funksiyasi xotira blokini yig'ishda ajratish uchun ishlatiladi. Dastur ushbu xotira blokiga malloc qaytaradigan ko'rsatgich orqali kiradi. Xotiraga ehtiyoj qolmaganda koʻrsatkich boʻsh joyga uzatiladi, bu xotirani boshqa maqsadlarda ishlatish uchun ajratadi.
Agar ajratilgan xotirani boʻshatmasangiz nima boʻladi?
Koʻp hollarda dasturdan chiqishdan oldin xotirani ajratish maʼnosizdir. OS baribir uni qaytarib oladi. Free teginish va oʻlik obʼyektlarni sahifalash; OS buni qilmaydi. Natija: Ajratishlarni hisoblaydigan "oqish detektorlari" bilan ehtiyot bo'ling.
Xotirani ajratish qimmatmi?
Yirik xotira bloklarini ajratish va boʻshatish narxini sodda oʻlchash har bir ajratish/bepul juftlik uchun taxminan 7,5 mks turadi degan xulosaga keladi. Biroq, katta hajmdagi ajratmalar uchun MB uchun uchta alohida toʻlov mavjud.
Agar shunday boʻlsa, ajratilgan xotira maydonini qayta taqsimlash mumkinmi?
Realloc funksiyasi old_blk tomonidan belgilangan xotira blokini quyidagi qoidalarga asoslanib ajratadi, qayta taqsimlaydi yoki boʻshatadi: Agar old_blk NULL boʻlsa, bayt oʻlchamli xotiraning yangi bloki. hisoblanadiajratilgan. Agar o'lcham nolga teng bo'lsa, old_blk ko'rsatgan xotirani bo'shatish uchun bo'sh funksiya chaqiriladi.