Паметта, разпределена с помощта на функции malloc и calloc, не се де-разпределя самостоятелно. Следователно свободен метод се използва винаги, когато се извършва динамичното разпределение на паметта. Помага за намаляване на загубата на памет, като я освобождава.
Как се освобождава разпределената памет?
В C библиотечната функция malloc се използва за разпределяне на блок памет в хийпа. Програмата осъществява достъп до този блок памет чрез указател, който malloc връща. Когато паметта вече не е необходима, показалецът се предава към free, което освобождава паметта, така че да може да се използва за други цели.
Какво ще стане, ако не освободите разпределената памет?
В повечето случаи освобождаването от памет точно преди изход от програмата е безсмислено. Операционната система така или иначе ще го възстанови. Free ще докосне и страница в мъртвите обекти; ОС няма. Последствие: Внимавайте с „детекторите за течове“, които отчитат разпределения.
Скъпо ли е разпределянето на памет?
Наивно измерване на разходите за разпределяне и освобождаване на големи блокове памет би стигнало до заключението, че струва около 7,5 μs за всяка двойка alloc/free. Въпреки това има три отделни разходи за MB за големи разпределения.
Може ли повторно локализиране да освободи разпределеното пространство в паметта, ако да, как?
Функцията realloc разпределя, преразпределя или освобождава блока памет, определен от old_blk въз основа на следните правила: Ако old_blk е NULL, нов блок памет с размер байтове еразпределени. Ако размерът е нула, функцията free се извиква, за да освободи паметта, посочена от old_blk.