Razlika između Stack i Heap
Sadržaj
Stack i Heap su memorijski segmenti koji se koriste u tehnici raspodjele memorije. Primarna razlika između Stack i heap je ta što uključuje linearnu i sekvencijalnu raspodjelu memorije koja se koristi u statičkoj raspodjeli memorije dok heap djeluje kao spremište prostora za pohranu koji je dodijelio memoriju nasumično (Dinamičko raspoređivanje memorije).
Brzina je glavni parametar koji razlikuje snop i hrpu; snop je znatno brži od gomile.
- Usporedni grafikon
- definicija
- Ključne razlike
- Zaključak
Usporedni grafikon
Osnove za usporedbu | Stog | Hrpa |
---|---|---|
Osnovni, temeljni | Pamćenje je dodijeljeno u (LIFO) Posljednje izdanje. | Memorija se raspoređuje slučajnim redoslijedom. |
Dodjela i dodjela | Automatski | Priručnik |
cijena | Manje | Više |
izvršenje | teško | Lako |
Pozivanje | NA) | O (1) |
Problem | Manjak memorije | Fragmentacija memorije |
Lokalitet reference | izvrstan | Adekvatan |
savitljivost | Fiksna veličina i nije fleksibilan | Promjena veličine je moguća |
Vrijeme pristupa | Brže | sporiji |
Definicija Stacka
Raspodjela stakala slijedi LIFO (Last in first out) strategija za dodjelu memorije procesima uz pomoć push i pop operacije. Svaki blok u memoriji je fiksne veličine koji se ne može proširiti ili ugovoriti. Posljednji unos u hrpi dostupan je u svakom trenutku. Stack koristi neprekidnu memoriju gdje pokazivač imenovan kao baza snopa upućuje na prvi unos snopa, a drugi pokazivač imenovan kao vrh snopa upućuje na zadnji unos snopa.
Stack također podržava pozive funkcija. Poziv funkcije može sadržavati kolekciju unosa stog, poznat je kao okvir snopa. Drugi naziv okvira snopa je zapis aktivacije u kon prevoditelju jer on pohranjuje podatke koji su korišteni u vrijeme sastavljanja programa. Kad god se neka funkcija zove, okvir snopa gura se u snop.
Okvir snopa se sastoji od adresa ili vrijednosti parametra funkcije i povratne adrese što znači gdje se kontrola treba vratiti nakon dovršetka izvršavanja funkcije.
Definicija Heap
Dodjela hrpe ne slijedi nikakav definitivan pristup; radije omogućuje slučajno dodjeljivanje i preraspodjelu memorije. Zahtjev za dodjelu postupka vraća se pokazivačem na dodijeljeno memorijsko područje u hrpi, a proces pristupa pokazivaču dodijeljenom memorijskom području.
Delokacija se vrši putem zahtjeva za razmještanje različit od skupa u kojem se memorija automatski razmješta. Heap razvija rupe u raspodjeli memorije kada se izgrade i oslobode strukture podataka. Koristi se tijekom izvođenja.
- Raspored i razmještanje u hrpi vrši CPU i automatski je, dok programer to mora napraviti ručno.
- Rukovanje okvirom iz hrpe je skuplje od rukovanja s okvirom s hrpom.
- Provedba snopa je složena. Za razliku od toga, implementacija gomile je jednostavna.
- Poziv funkcije u snopu traje O (N) vrijeme. Suprotno tome, potrebno je O (1) vrijeme u hrpi.
- Provedba snopa uglavnom pati od problema s nedostatkom memorije. Naprotiv, glavni problem u hrpi je fragmentacija.
- Pristup okviru snopa je lakši od gomile jer je snop ograničen na malu regiju memorije i uvijek pogađa predmemoriju, ali okviri hrpe su raspršeni po memoriji tako da pristup memoriji može prouzrokovati više propusta u predmemoriji.
- Stack nije fleksibilan, dodijeljena veličina memorije se ne može promijeniti. S druge strane, gomila je fleksibilna i raspoređena memorija se može mijenjati.
- Kopče treba više vremena za pristup nego hrpa.
Zaključak
Raspodjela snopa je brža, ali složena. S druge strane, gomila je sporija, ali njegova je implementacija jednostavnija od skupa. Heap je učinkovitiji od gomile.