Razlika između Stack i Heap

Autor: Laura McKinney
Datum Stvaranja: 1 Travanj 2021
Datum Ažuriranja: 11 Svibanj 2024
Anonim
.NET Stack vs Heap
Video: .NET Stack vs 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.

  1. Usporedni grafikon
  2. definicija
  3. Ključne razlike
  4. Zaključak

Usporedni grafikon

Osnove za usporedbuStogHrpa
Osnovni, temeljniPamćenje je dodijeljeno u (LIFO) Posljednje izdanje.Memorija se raspoređuje slučajnim redoslijedom.
Dodjela i dodjelaAutomatskiPriručnik
cijenaManjeViše
izvršenjeteškoLako
PozivanjeNA)O (1)
ProblemManjak memorijeFragmentacija memorije
Lokalitet referenceizvrstanAdekvatan
savitljivostFiksna veličina i nije fleksibilanPromjena veličine je moguća
Vrijeme pristupaBržesporiji


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.

  1. Raspored i razmještanje u hrpi vrši CPU i automatski je, dok programer to mora napraviti ručno.
  2. Rukovanje okvirom iz hrpe je skuplje od rukovanja s okvirom s hrpom.
  3. Provedba snopa je složena. Za razliku od toga, implementacija gomile je jednostavna.
  4. Poziv funkcije u snopu traje O (N) vrijeme. Suprotno tome, potrebno je O (1) vrijeme u hrpi.
  5. Provedba snopa uglavnom pati od problema s nedostatkom memorije. Naprotiv, glavni problem u hrpi je fragmentacija.
  6. 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.
  7. 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.
  8. 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.