Արդյո՞ք հատկացված հիշողությունն անվճար է:

Արդյո՞ք հատկացված հիշողությունն անվճար է:
Արդյո՞ք հատկացված հիշողությունն անվճար է:
Anonim

Հիշողությունը, որը հատկացվում է malloc և calloc ֆունկցիաների միջոցով, ինքնուրույն չի ապաբաշխվում: Ուստի անվճար մեթոդ օգտագործվում է, երբ տեղի է ունենում դինամիկ հիշողության բաշխում: Այն օգնում է նվազեցնել հիշողության վատնումը՝ ազատելով այն:

Ինչպե՞ս է հատկացված հիշողությունը ազատվում:

C-ում գրադարանի malloc ֆունկցիան օգտագործվում է կույտի վրա հիշողության բլոկ հատկացնելու համար: Ծրագիրը մուտք է գործում հիշողության այս բլոկը ցուցիչի միջոցով, որը վերադարձնում է malloc-ը: Երբ հիշողությունն այլևս անհրաժեշտ չէ, ցուցիչը փոխանցվում է անվճար, որը տեղաբաշխում է հիշողությունը, որպեսզի այն կարողանա օգտագործվել այլ նպատակներով:

Ի՞նչ կպատահի, եթե չազատե՞ք հատկացված հիշողությունը:

Շատ դեպքերում, հիշողության տեղաբաշխումը ծրագրից դուրս գալուց անմիջապես առաջ անիմաստ է: ՕՀ-ն, այնուամենայնիվ, կվերականգնի այն: Անվճար-ը կդիպչի և կէջեր մեռած օբյեկտները; ՕՀ-ն չի անի: Հետևանք. Զգույշ եղեք «արտահոսքի դետեկտորների» հետ, որոնք հաշվում են հատկացումները։

Հիշողության տեղաբաշխումը թանկ է:

Հիշողության մեծ բլոկների տեղաբաշխման և ազատման ծախսերի միամիտ չափումը կարող է եզրակացնել, որ այն արժե մոտ 7,5 մկվ յուրաքանչյուր բաշխման/ անվճար զույգի համար: Այնուամենայնիվ, կան երեք առանձին ծախսեր մեկ ՄԲ-ի համար խոշոր հատկացումների համար:

Կարո՞ղ է վերաբաշխել հատկացված հիշողության տարածքը, եթե այո, ինչպե՞ս:

Realloc ֆունկցիան հատկացնում, վերաբաշխում կամ ազատում է հիշողության բլոկը, որը նշված է old_blk-ով հետևյալ կանոնների հիման վրա. էհատկացված. Եթե չափը զրոյական է, ազատ ֆունկցիան կանչվում է թողարկելու հիշողությունը, որի վրա մատնանշված է old_blk:

Խորհուրդ ենք տալիս: