የተመደበው ማህደረ ትውስታ ነፃ ነው?

ዝርዝር ሁኔታ:

የተመደበው ማህደረ ትውስታ ነፃ ነው?
የተመደበው ማህደረ ትውስታ ነፃ ነው?
Anonim

ማሎክ እና ካሎክ ተግባራትን በመጠቀም የተመደበው ማህደረ ትውስታ በራሳቸው አልተከፋፈለም። ስለዚህ የ ነፃ ዘዴ ጥቅም ላይ ይውላል፣ በማንኛውም ጊዜ ተለዋዋጭ የማህደረ ትውስታ ምደባው በተከናወነ። ማህደረ ትውስታን ነፃ በማድረግ ብክነትን ለመቀነስ ይረዳል።

እንዴት የተመደበው ማህደረ ትውስታ ነፃ ይሆናል?

በC ውስጥ፣የላይብረሪው ተግባር malloc የማህደረ ትውስታን ክምር ለመመደብ ስራ ላይ ይውላል። ፕሮግራሙ malloc በሚመለስበት ጠቋሚ በኩል ወደዚህ የማህደረ ትውስታ ክፍል ይደርሳል። ማህደረ ትውስታው ካላስፈለገ ጠቋሚው ወደ ነጻ ይተላለፋል ይህም ማህደረ ትውስታ ለሌላ አገልግሎት እንዲውል ያደርጋል።

የተመደበው ማህደረ ትውስታን ነጻ ካላደረጉ ምን ይከሰታል?

በአብዛኛዎቹ ጉዳዮች ከፕሮግራሙ ከመውጣቱ በፊት ትውስታ ን ማስተናገድ ትርጉም የለሽ ነው። ስርዓተ ክወናው ለማንኛውም መልሶ ይወስዳል። ነጻ ይዳስሳል እና በሞቱ ነገሮች ውስጥ ይገለጣል። OS አይሆንም። መዘዝ፡ ምደባዎችን በሚቆጥሩ "leak detectors" ይጠንቀቁ።

ሜሞሪ መመደብ ውድ ነው?

ትላልቅ የማህደረ ትውስታዎችን የመመደብ እና የማስለቀቅ ዋጋ ቀላል ያልሆነ መለኪያ ለእያንዳንዱ alloc/ነጻ ጥንድ ወደ 7.5 μs ያስከፍላል ብሎ ይደመድማል። ነገር ግን ለትልቅ ምደባዎች በሜባ ሶስት የተለያዩ ወጪዎች አሉ።

አዎ እንዴት ከሆነ የተመደበውን የማህደረ ትውስታ ቦታ ነፃ ማውጣት ይችላል?

የሪልሎክ ተግባር በሚከተለው ህግ መሰረት በአሮጌ_blk የተገለጸውን የማህደረ ትውስታ ክፍል ይመድባል፣ያለውጣል ወይም ነጻ ያወጣል፡አሮጌ_blk NULL ከሆነ አዲስ የማህደረ ትውስታ መጠን ባይት ነው።ተመድቧል። መጠኑ ዜሮ ከሆነ ነፃው ተግባር በአሮጌ_blk የተጠቆመውን ማህደረ ትውስታ ለመልቀቅ ይጠራል።

የሚመከር: