Հիշողությունը, որը հատկացվում է malloc և calloc ֆունկցիաների միջոցով, ինքնուրույն չի ապաբաշխվում: Ուստի անվճար մեթոդ օգտագործվում է, երբ տեղի է ունենում դինամիկ հիշողության բաշխում: Այն օգնում է նվազեցնել հիշողության վատնումը՝ ազատելով այն:
Ինչպե՞ս է հատկացված հիշողությունը ազատվում:
C-ում գրադարանի malloc ֆունկցիան օգտագործվում է կույտի վրա հիշողության բլոկ հատկացնելու համար: Ծրագիրը մուտք է գործում հիշողության այս բլոկը ցուցիչի միջոցով, որը վերադարձնում է malloc-ը: Երբ հիշողությունն այլևս անհրաժեշտ չէ, ցուցիչը փոխանցվում է անվճար, որը տեղաբաշխում է հիշողությունը, որպեսզի այն կարողանա օգտագործվել այլ նպատակներով:
Ի՞նչ կպատահի, եթե չազատե՞ք հատկացված հիշողությունը:
Շատ դեպքերում, հիշողության տեղաբաշխումը ծրագրից դուրս գալուց անմիջապես առաջ անիմաստ է: ՕՀ-ն, այնուամենայնիվ, կվերականգնի այն: Անվճար-ը կդիպչի և կէջեր մեռած օբյեկտները; ՕՀ-ն չի անի: Հետևանք. Զգույշ եղեք «արտահոսքի դետեկտորների» հետ, որոնք հաշվում են հատկացումները։
Հիշողության տեղաբաշխումը թանկ է:
Հիշողության մեծ բլոկների տեղաբաշխման և ազատման ծախսերի միամիտ չափումը կարող է եզրակացնել, որ այն արժե մոտ 7,5 մկվ յուրաքանչյուր բաշխման/ անվճար զույգի համար: Այնուամենայնիվ, կան երեք առանձին ծախսեր մեկ ՄԲ-ի համար խոշոր հատկացումների համար:
Կարո՞ղ է վերաբաշխել հատկացված հիշողության տարածքը, եթե այո, ինչպե՞ս:
Realloc ֆունկցիան հատկացնում, վերաբաշխում կամ ազատում է հիշողության բլոկը, որը նշված է old_blk-ով հետևյալ կանոնների հիման վրա. էհատկացված. Եթե չափը զրոյական է, ազատ ֆունկցիան կանչվում է թողարկելու հիշողությունը, որի վրա մատնանշված է old_blk: