Безплатна памет в C с безплатна функция

Free Memory C With Free Function



Езикът C е достатъчно ефективен, за да се справи с управлението на паметта си. Това означава, че всеки път, когато декларирате редовна променлива от който и да е тип данни в C, самият език за програмиране е отговорен за освобождаването или освобождаването на тази памет, след като програмата ви бъде изпълнена успешно. Въпреки това, в случай на динамично разпределение на паметта, тъй като разпределяте паметта ръчно, затова също трябва да я освободите сами.

В библиотеката stdlib.h има специална функция за тази цел, т.е. функцията free (). Днес ще изследваме необходимостта от използване на тази функция в езика за програмиране C. След това ще разгледаме няколко примера, в които тази функция е била използвана за ръчно освобождаване на паметта в езика за програмиране C в Linux.







Необходимост от използване на безплатната функция в C за освобождаване на системната памет:

Всички знаем, че нашите компютърни системи имат ограничена памет, поради което никога не можем да изпълняваме безкрайни програми в нея. В случай на автоматично разпределение на паметта, компютърът се грижи за освобождаването на паметта, когато вашата програма приключи изпълнението си. Когато обаче разпределяме паметта ръчно от купчината, трябва да я освободим от един или друг начин.



В противен случай в крайна сметка ще имаме недостиг на памет и няма да изпълняваме нашите програми повече. Тук влиза в действие функцията free () на библиотеката stdlib.h. Ние използваме тази функция в края на програма точно преди оператора return, така че паметта на купчината да бъде върната в компютърната система преди прекратяването на вашата програма.



Да предположим, че ще продължите да игнорирате тази функция, докато пишете вашите C кодове, които са специално насочени към динамично разпределение на паметта. В този случай ще дойде момент, в който няма да имате достъп до купчината си, тъй като тя ще изчерпи паметта си. Ето защо тази привидно по -малко ценна функция никога не трябва да се забравя, когато поемате динамично разпределението на паметта.





Общият синтаксис на функцията free () в езика за програмиране C е следният:

невалиденБезплатно (невалиден*птр)

Тук ключовата дума void преди функцията free () заявява, че типът на връщане на тази функция е void. Указателят вътре в скобите съответства на местоположението на паметта, което трябва да бъде освободено. Следващият раздел ще опише някои примери, в които функцията free () е била използвана за освобождаване на динамичната памет, придобита в C.



Примери за използване на безплатната функция в C:

Функцията free () може да се използва с трите функции за разпределение на паметта на библиотеката stdlib.h, т.е. malloc, calloc и realloc. Задължително е да използвате тази функция, след като посочите основната функционалност на вашата програма, за да можете да предадете паметта на купчината, която сте динамично разпределили по време на изпълнението на програмата, обратно на вашата компютърна система. Нека сега разгледаме няколко примера, в които функцията free () е била използвана с функциите malloc и calloc в езика за програмиране C.

Пример # 1: Използване на безплатната функция с calloc в C:

C кодът за използване на функцията free () с функцията calloc () е споделен в изображението по -долу:

Основната цел на този код беше да присвои малко памет динамично с помощта на функцията calloc (). За това взехме размера на динамичната памет и стойностите на тази динамична памет като вход от потребителя. След това възнамерявахме да отпечатаме получените стойности на терминала. След целия този код имаме нашата функция free (), която ще освободи разпределената динамична памет поради изпълнението на нашата C програма.

Малко модифицирана версия на същия код е показана и на изображението, цитирано по -долу:

Тази модифицирана версия е предназначена само за отпечатване на нашите динамично разпределени стойности на паметта преди ръчното й инициализиране. Знаем, че функцията calloc () инициализира цялата памет с нули, преди да настъпи актуализацията. Основният момент, който трябва да се отбележи тук в този код, е, че въпреки че този код беше доста компактен и прост, ние все пак използвахме функцията free (), след като желаната функционалност беше постигната, само за да освободим куп паметта, която имахме придобити в резултат на изпълнение на тази програма C.

Пример # 2: Използване на безплатната функция с malloc в C:

C кодът за използване на функцията free () с функцията malloc () е споделен в изображението, добавено по -долу:

Основната цел на този код беше да присвои малко памет динамично с помощта на функцията malloc (). За целта сме задали стойностите на тази динамична памет в цикъл for. След това възнамерявахме да отпечатаме получените стойности на терминала с помощта на друг for цикъл. След целия този код имаме нашата функция free () точно преди оператора return, който просто ще освободи разпределената динамична памет в резултат на изпълнението на нашата програма C.

Заключение:

Тази статия подчертава значението на използването на функцията free () в езика за програмиране C в Linux. Повечето потребители смятат, че функциите за разпределение на файла stdlib.h са по -важни; обаче, като прегледате тази статия, можете ясно да видите, че функцията free () е еднакво важна. Това ще ви помогне да освободите динамично натрупаната памет и да гарантирате, че никога няма да останете без памет, когато се опитвате да изпълнявате програмите си в бъдеще.