Što je stog?
Stog je posebno područje memorije računala koje pohranjuje privremene varijable stvorene funkcijom. U steku se varijable deklariraju, pohranjuju i inicijaliziraju tijekom izvođenja.
To je privremena memorija za pohranu. Kada se računalni zadatak dovrši, memorija varijable automatski će se izbrisati. Odjeljak stoga uglavnom sadrži metode, lokalnu varijablu i referentne varijable.
U ovom ćete tutorijalu naučiti,
- Što je Stack?
- Što je Heap?
- Ključne razlike između stoga i hrpe
- Prednosti upotrebe Stacka
- Prednosti upotrebe Heap-a
- Mane upotrebe Stacka
- Mane upotrebe Heap-a
- Kada koristiti hrpu ili stog?
Što je Heap?
Hrpa je memorija koju programski jezici koriste za pohranu globalnih varijabli. Prema zadanim postavkama, sve globalne varijable pohranjene su u memorijskom prostoru hrpe. Podržava dinamičko dodjeljivanje memorije.
Hrpom se ne upravlja automatski za vas i CPU ne upravlja tako strogo. To je više poput slobodno plutajućeg područja sjećanja.
KLJUČNA RAZLIKA
- Stog je linearna struktura podataka, dok je Heap hijerarhijska struktura podataka.
- Memorija stoga nikada neće postati fragmentirana, dok se memorija hrpe može fragmentirati jer se blokovi memorije prvo dodijele, a zatim oslobode.
- Stog pristupa lokalnim varijablama samo dok vam Heap omogućuje globalni pristup varijablama.
- Varijablama stoga ne može se promijeniti dok se varijablama hrpe može promijeniti veličina.
- Memorija stoga raspoređuje se u susjedni blok, dok se memorija hrpe dodjeljuje bilo kojim slučajnim redoslijedom.
- Stack ne zahtijeva de-alokaciju varijabli, dok je u Heap-u potrebna de-alokacija.
- Dodjela i odvajanje steka vrši se prema uputama kompajlera, dok dodjelu hrpe i odvajanje vrši programer.
Ključne razlike između stoga i hrpe
Parametar | Stog | Hrpa |
---|---|---|
Vrsta struktura podataka | Stog je linearna struktura podataka. | Hrpa je hijerarhijska struktura podataka. |
Brzina pristupa | Brzi pristup | Sporije u usporedbi sa hrpom |
Upravljanje prostorom | Prostorom kojim učinkovito upravlja OS, tako da memorija nikada neće postati fragmentirana. | Prostor hrpe ne koristi se tako učinkovito. Memorija može postati fragmentirana kao prvo dodijeljeni, a zatim oslobođeni blokovi memorije. |
Pristup | Samo lokalne varijable | Omogućuje vam globalni pristup varijablama. |
Ograničenje veličine prostora | Ograničenje veličine sloga ovisno o OS-u. | Nema određeno ograničenje veličine memorije. |
Promijeni veličinu | Varijablama se ne može promijeniti veličina | Varijablama se može promijeniti veličina. |
Dodjela memorije | Memorija se raspoređuje u susjedni blok. | Memorija se dodjeljuje bilo kojim slučajnim redoslijedom. |
Dodjela i preraspodjela | Automatski se vrši prema uputama kompajlera. | To ručno radi programer. |
Razdvajanje | Ne zahtijeva de-alokaciju varijabli. | Potrebna je eksplicitna preraspodjela. |
Trošak | Manje | Više |
Provedba | Stog se može implementirati na 3 načina, zasnovana na jednostavnom nizu, koristeći dinamičku memoriju i na temelju povezanog popisa. | Hrpa se može implementirati pomoću polja i stabala. |
Glavni problem | Nedostatak memorije | Fragmentacija memorije |
Mjesto reference | Upute za automatsko sastavljanje vremena. | Adekvatan |
Fleksibilnost | Fiksna veličina | Promjena veličine je moguća |
Vrijeme pristupa | Brže | Sporije |
Prednosti upotrebe Stacka
Evo prednosti i prednosti upotrebe stoga:
- Pomaže vam u upravljanju podacima metodom Last In First Out (LIFO), što nije moguće s povezanim popisom i nizom.
- Kada se funkcija zove, lokalne se varijable spremaju u stog i automatski se uništavaju kad se vrate.
- Stog se koristi kada se varijabla ne koristi izvan te funkcije.
- Omogućuje vam upravljanje načinom na koji se memorija dodjeljuje i oslobađa.
- Stack automatski čisti objekt.
- Nije lako korumpiran
- Varijablama se ne može promijeniti veličina.
Prednosti upotrebe Heap-a
Pros / blagodati upotrebe hrpe memorije su:
- Hrpa vam pomaže pronaći najveći i najmanji broj
- Prikupljanje smeća izvodi se u memoriji hrpe kako bi se oslobodila memorija koju koristi objekt.
- Metoda hrpe također korištena u Prioritetnom redu.
- Omogućuje vam globalni pristup varijablama.
- Hrpa nema ograničenja veličine memorije.
Mane upotrebe Stacka
Nedostaci / nedostaci upotrebe Stack memorije su:
- Stek memorija je vrlo ograničena.
- Stvaranje previše predmeta na stogu može povećati rizik od prelijevanja stoga.
- Nasumični pristup nije moguć.
- Zamjenjiva pohrana bit će prebrisana, što ponekad dovodi do nedefiniranog ponašanja funkcije ili programa.
- Snop će pasti izvan područja memorije, što može dovesti do abnormalnog prekida.
Mane upotrebe Heap-a
Protiv / nedostaci upotrebe Heaps memorije su:
- Može pružiti maksimalnu memoriju koju OS može pružiti
- Potrebno je više vremena za izračunavanje.
- Upravljanje memorijom je složenije u hrpi memorije jer se koristi globalno.
- Potrebno je previše vremena za izvršenje u usporedbi sa stogom.
Kada koristiti hrpu ili stog?
Trebali biste koristiti hrpu kada vam je potrebno dodijeliti veliki blok memorije. Na primjer, želite stvoriti niz velikih veličina ili veliku strukturu da biste dugo zadržali tu varijablu, a zatim biste je trebali rasporediti na hrpu.
Međutim, ako radite s relativno malim varijablama koje su potrebne samo dok funkcija koja ih koristi ne oživi. Tada trebate koristiti stog koji je brži i lakši.