Kumbukumbu iliyotengwa kwa kutumia vitendaji malloc na calloc haijatengwa yenyewe. Kwa hivyo mbinu isiyolipishwa inatumika, wakati wowote ugawaji wa kumbukumbu unaobadilika unafanyika. Inasaidia kupunguza upotevu wa kumbukumbu kwa kuikomboa.
Kumbukumbu iliyotengwa inafanywaje kuwa bure?
Katika C, chaguo la kukokotoa la maktaba hutumika kutenga hifadhi ya kumbukumbu kwenye lundo. Programu hufikia kizuizi hiki cha kumbukumbu kupitia pointer ambayo malloc inarudi. Wakati kumbukumbu haihitajiki tena, kielekezi hupitishwa kuwa huru ambayo hutenganisha kumbukumbu ili iweze kutumika kwa madhumuni mengine.
Je, nini kitatokea usipotoa hifadhi iliyogawiwa?
Mara nyingi, kutenga kumbukumbu kabla tu ya kuondoka kwa programu hakuna maana. Mfumo wa uendeshaji utaidai tena. Bure itagusa na kurasa katika vitu vilivyokufa; OS haitafanya. Matokeo: Kuwa mwangalifu na "vitambua uvujaji" vinavyohesabu mgao.
Je, ugawaji kumbukumbu ni ghali?
Kipimo cha kutojua cha gharama ya kutenga na kukomboa hifadhi kubwa za kumbukumbu kitahitimisha kuwa inagharimu takriban 7.5 μs kwa kila alloc/bila malipo. Hata hivyo kuna gharama tatu tofauti kwa kila MB kwa mgao mkubwa.
Je, unaweza kuweka upya nafasi ya kumbukumbu iliyotengwa ikiwa ni hivyo vipi?
Kitendo cha kukokotoa realloc hutenga, kuweka upya, au kuachilia kizuizi cha kumbukumbu kilichobainishwa na old_blk kulingana na sheria zifuatazo: Ikiwa old_blk ni NULL, hifadhi mpya ya kumbukumbu ya baiti za ukubwa nizilizotengwa. Ikiwa ukubwa ni sifuri, chaguo la kukokotoa lisilolipishwa linaitwa kutoa kumbukumbu iliyoelekezwa na old_blk.