Malloc жана calloc функцияларын колдонуу менен бөлүнгөн эстутум өз алдынча бөлүнбөйт. Демек, акысыз ыкмасы динамикалык эстутумду бөлүштүрүү орун алган сайын колдонулат. Бул эстутумду боштондукка чыгаруу менен ысырап кылууну азайтууга жардам берет.
Бөлүнгөн эс кантип бошойт?
С тилинде malloc китепкана функциясы үймөктө эстутум блогун бөлүштүрүү үчүн колдонулат. Программа эс тутумдун бул блогуна malloc кайтарып берген көрсөткүч аркылуу жетет. Эстутум керек болбой калганда, көрсөткүч боштондукка берилет, ал эстутумду башка максаттарда колдонуу үчүн бөлүштүрөт.
Бөлүнгөн эстутумду бошотпосоңуз эмне болот?
Көпчүлүк учурларда, программадан чыгуунун алдында эстутум бөлүштүрүү маанисиз. OS баары бир аны кайтарып алат. Free тийип, өлүк объекттерди барактайт; OS болбойт. Натыйжа: Бөлүштүрүүнү эсептеген "агымдын детекторлорунан" этият болуңуз.
Эстутумду бөлүштүрүү кымбатпы?
Эстимдун чоң блокторун бөлүштүрүүнүн жана бошотуунун баасын жөнөкөй өлчөө, ар бир бөлүштүрүү/эркин жуп үчүн болжол менен 7,5 мкс турат деген жыйынтыкка келет. Бирок чоң бөлүштүрүү үчүн МБ үчүн үч өзүнчө чыгым бар.
Бөлүнгөн эс мейкиндигин кайра бошотсо болобу?
Realloc функциясы төмөнкү эрежелердин негизинде old_blk тарабынан белгиленген эстутум блогун бөлүштүрөт, кайра бөлүштүрөт же бошотот: Эгерде old_blk NULL болсо, байт өлчөмүндөгү эстутумдун жаңы блогу болуп саналатбөлүнгөн. Эгерде өлчөмү нөлгө барабар болсо, бош функция old_blk көрсөткөн эстутумду бошотуу үчүн чакырылат.