organizație
O grămadă utilizează memorie alocată dinamic sau solicitată în mod static de sistemul de operare. Această memorie este utilizată pentru alocarea obiectelor create dinamic de către program.
În orice moment în timpul existenței heapului, toată memoria pe care funcționează heapul este împărțită în memorie ocupată și liberă. Memoria ocupată este utilizată pentru a plasa obiecte care au fost deja create și care nu au fost încă lansate în acest moment. Din cantitatea de memorie liberă, primitivele de lucru-heap pot aloca memorie pentru obiecte noi.
Pentru a stoca date despre memoria aparținând unei memorii ocupate sau libere, se utilizează de obicei o zonă de memorie suplimentară.
Principiul de funcționare
Pentru a plasa și șterge obiecte dinamice, utilizați primitivele "create object" (de exemplu, malloc) și "delete object" (de exemplu, libere). În plus, înainte de începerea programului, halda este inițializată, în timpul căruia toți cei alocați inițial sub memoria heap sunt marcați ca fiind gratuite.
Când un obiect este șters, implementarea elementului primitiv "șterge obiectul" marchează că zona utilizată anterior de obiectul șters este acum liberă.
Între apelurile pentru a "crea un obiect" și "a șterge un obiect", zona de memorie alocată obiectului nu poate fi dată nici unui alt obiect. Prin urmare, aplicația poate utiliza în mod liber zona de memorie alocată. În același timp, după ce primitivul "elimina obiectul" este apelat, zona eliberată poate fi refolosită sau dată sistemului de operare, astfel încât utilizarea pointerului obținut mai devreme de primitivul "create object" va duce la accidente sau la funcționarea imprevizibilă a programului.
Apelurile către funcțiile bibliotecii apar de obicei mai repede și necesită resurse de execuție mai reduse decât apelurile către funcții de întreruperi de sistem sau funcții API ale sistemului.
Heap algoritmi și performanță
Blocurile sunt libere și ocupate. Pentru a putea aloca memorie prin reutilizarea unui bloc gratuit (fără o creștere a haldelor scumpe în general - necesită un apel sistem) într-o formă sau alta aveți nevoie de o listă de blocuri libere.
Pentru a reduce lista blocurilor libere pentru a reduce timpul de by-pass, este întotdeauna logic să fuzionați 2 sau 3 blocuri consecutive libere într-una. Dacă blocul ulterior este liber, atunci este ușor să îl găsiți, trecând înapoi spre mărimea blocului care trebuie eliberat. Cu blocul anterior, totul este mai complicat și, prin urmare, este logic să se păstreze dimensiunea blocului anterior (pentru căutarea lui) în antetul oricărui bloc.
Lista blocurilor gratuite poate fi organizată în moduri diferite, iar performanța heap depinde direct de organizarea sa. Ideea este că timpul principal al operațiunii de selecție este cheltuit pentru căutarea în această listă.
O implementare foarte bună este mai multe liste, fiecare pentru dimensiunea sa. Acest lucru vă permite să ignorați rapid blocurile libere, în mod evident, prea mici, în liste întregi, fără a verifica fiecare personal.
Urmăriți ce este "Pile (memorie)" în alte dicționare:
Heap (memorie nealocată) - Acest termen are alte semnificații, vezi Heap (valori). Heap (în engleză heap) în domeniul informaticii și programării este numele structurii de date, prin care se realizează memoria alocată dinamic al aplicației, precum și volumul ... ... Wikipedia
Memorie alocată dinamic - Memoria dinamică este memoria operațională a computerului furnizată programului (procedură, subrutină) atunci când rulează. Alocarea dinamică a datelor înseamnă alocarea de memorie dinamică direct atunci când programul este în desfășurare sau ... ... Wikipedia
Masterforex-V - (Masterforex 5) Masterforex V acest proiect on-line de formare în domeniul proiect de formare Forex Demascarea piața valutară Masterforex V, organizatorul și profesori frauduloase Academia Masterforex 5, metode de înșelăciune clienților proiectului ... ... investitor Encyclopedia
Kamen Rider Double - Kamen Ryder Dublu pentru cel de-al douăzecilea anotimp al seriei Tokusatsu Rider în mască. Este plină de umor și are o mică atmosferă detectivă. Motivul principal al sezonului sunt unitățile flash de calculator, pe care Riders și monstrii de sezon le folosesc pentru ... ... Wikipedia
Alocarea dinamică a memoriei - Alocarea dinamică a memoriei este o modalitate de a aloca memoria RAM a calculatorului pentru obiectele din program, în care alocarea de memorie pentru obiect este efectuată în timpul executării programului. Cu alocarea dinamică a obiectelor de memorie ... ... Wikipedia
BELARUS - [Republica Belarus, Belarus], stat în Vost. Europa. Teritoriu: 207,6 mii de metri pătrați. km. Capitala este Minsk. Geografie. Se învecinează la nord-vest și Lituania în nord cu Letonia, în partea de nord și est cu Rusia, Ucraina în sud, la vest ... ... Enciclopedia Ortodoxă