Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»


// Бос ұяшықтар тізімінің нұсқауышын жылжыту



Pdf көрінісі
бет290/642
Дата30.03.2022
өлшемі3,66 Mb.
#29231
түріПрограмма
1   ...   286   287   288   289   290   291   292   293   ...   642
Байланысты:
pavlovskaia-jogargy-dengeili

// Бос ұяшықтар тізімінің нұсқауышын жылжыту:

if (p) headOfFree = р -> next;

14-1140



210

// Егер жадыда бос орын болмаса, кезекті блокты бөлеміз:

else {

pObj *newblock = static_cast


1

(::operator new(BLOCK_SIZE * sizeof(pObj)));

// Біріншіден басқа барлық ұяшықтар бос (ол

// қолданылуда), оларды байланыстырамыз:

for (int i = 1; i< BLOCK_SIZE - 1; ++i) 

     newblock[i].next = &newblock[i + 1];

  newblock[BLOCK_SIZE - l].next = 0;

// Бос ұяшықтар тізімінің басын белгілейміз:

headOfFree = &newblock[l];

р = newblock;

   } 

return p; // Белгіленген жадыға нұсқауышты қайтарамыз

}

Асыра жүктелген



 

new

 операциясы мұраланады, сондықтан ол туындайтын 

объектілер үшін шақырылады. Егер олардың көлемдері негізгі объект көлеміне 

сəйкес келмесе (осылай болуы əбден ықтимал), онда қиындықтар туындауы 

мүмкін. Олардың алдын алу үшін операцияның басында көлемдердің сəйкес 

келуі тексеріледі. Егер объектінің көлемі 



new

 операциясы асыра жүктелген 

көлемге тура келмесе, жадыны бөлуге сұраныс стандартты 



Достарыңызбен бөлісу:
1   ...   286   287   288   289   290   291   292   293   ...   642




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет