Razlika med Stackom in Heapom

Avtor: Laura McKinney
Datum Ustvarjanja: 1 April 2021
Datum Posodobitve: 13 Maj 2024
Anonim
Razlika med Stackom in Heapom - Tehnologija
Razlika med Stackom in Heapom - Tehnologija

Vsebina


Stack in Heap sta spominska segmenta, ki se uporabljata v tehniki dodeljevanja pomnilnika. Primarna razlika med Stackom in kopico je, da sklad vsebuje linearno in zaporedno razporeditev pomnilnika, ki se uporablja pri statični dodelitvi pomnilnika, medtem ko heap deluje kot območje pomnilniškega prostora, ki je pomnilnik dodelil naključno (dinamična razporeditev pomnilnika).

Hitrost je glavni parameter, ki razlikuje skladanje in kopico; stack je bistveno hitrejši od kopice.

  1. Primerjalna tabela
  2. Opredelitev
  3. Ključne razlike
  4. Zaključek

Primerjalna tabela

Osnove za primerjavoZložiteKup
OsnovniPomnilnik je dodeljen (LIFO) Zadnja na prvi način.Pomnilnik je razporejen po naključnem vrstnem redu.
Dodelitev in dodelitevSamodejnoPriročnik
CenaManjVeč
IzvajanjeTežkoPreprosto
PokličeO (N)O (1)
TežavaPomanjkanje spominaRazdrobljenost spomina
Referenčna lokalnostOdličnoUstrezno
PrilagodljivostFiksna velikost in ni prilagodljivVelikost je možna
Čas dostopaHitrejePočasneje


Opredelitev Stack

Dodeljevanje skladov sledi strategiji LIFO (Last in first out) za dodelitev pomnilnika procesom s pomočjo push in pop operacije. Vsak blok v pomnilniku je določene velikosti, ki ga ni mogoče razširiti ali skrčiti. Zadnji vnos v skladovnici je dostopen v vsakem trenutku. Sklad uporablja neprekinjeni pomnilnik, kjer kazalec, imenovan kot osnovni niz, kaže na prvi vnos sklada in drug kazalec, ki je imenovan kot vrh sklada, kaže na zadnji vnos sklada.

Stack podpira tudi klice funkcij. Klic funkcije lahko vsebuje zbirko vnosov v nizu, znan je kot okvir skladanja. Drugo ime ogrodja skladovnice je aktivacijski zapis v con prevajalniku, saj shranjuje podatke, uporabljene v času sestavljanja programa. Kadarkoli se funkcija imenuje, se okvir zlaganja potisne v sveženj.

Okvir zlaganja je sestavljen iz naslovov ali vrednosti parametra funkcije in povratnega naslova, ki pomeni, kam naj se vrne kontrola po dokončanju funkcije.

Opredelitev Heap

Dodelitev kopice ne sledi nobenemu dokončnemu pristopu; raje omogoča naključno dodeljevanje in dodelitev pomnilnika. Zahteva za dodelitev s postopkom se vrne s kazalcem na dodeljeno pomnilniško območje v kopici in postopek prek kazalca dostopa do dodeljenega pomnilnega območja.


Prerazporeditev se izvede prek zahteve za premestitev, ki je drugačna od svežnja, v katerem se pomnilnik samodejno razporedi. Kopica razvije luknje v dodelitvi pomnilnika, ko se gradijo in sprostijo podatkovne strukture. Uporablja se med izvajanjem.

  1. V sveženju dodeljevanje in premestitev opravi CPU in je samodejno, medtem ko mora programer to storiti ročno.
  2. Ravnanje z ogrodjem je dražje od ravnanja z okvirjem.
  3. Izvedba sklada je zapletena. Nasprotno je izvedba kopice preprosta.
  4. Funkcijski klic v svežnju traja O (N) čas. V nasprotju s tem traja O (1) čas v kopici.
  5. Izvajanje skladov večinoma trpi zaradi pomanjkanja pomnilnika. Nasprotno, glavna težava v kopici je razdrobljenost.
  6. Dostop do okvira do nabora je lažji od kupa, saj je sklad omejen na majhno območje pomnilnika in vedno zadene predpomnilnik, vendar so kupi razpršeni po celotnem pomnilniku, tako da lahko dostop do pomnilnika povzroči več zamud v predpomnilniku.
  7. Zlaganje ni prilagodljivo, dodeljene velikosti pomnilnika ni mogoče spremeniti. Po drugi strani je kopica prilagodljiva, dodeljeni pomnilnik pa se lahko spremeni.
  8. Kopa potrebuje več časa za dostop kot kup.

Zaključek

Razporeditev skladov je hitrejša, vendar zapletena. Po drugi strani je kopica počasnejša, vendar je njegova izvedba enostavnejša od nabora. Heap je učinkovitejši od zlaganja.