Rozdiel medzi zásobami a haldy

Autor: Laura McKinney
Dátum Stvorenia: 1 Apríl 2021
Dátum Aktualizácie: 17 Smieť 2024
Anonim
Rozdiel medzi zásobami a haldy - Technológie
Rozdiel medzi zásobami a haldy - Technológie

Obsah


Stack a Heap sú segmenty pamäte používané v technikách prideľovania pamäte. Primárny rozdiel medzi zásobníkmi a haldy spočíva v tom, že zásobníky zahŕňajú lineárne a postupné prideľovanie pamäte, ktorá sa používa v prideľovaní statickej pamäte, zatiaľ čo halda funguje ako oblasť úložnej oblasti, ktorá náhodne prideľuje pamäť (dynamické prideľovanie pamäte).

Rýchlosť je hlavným parametrom, ktorý rozlišuje hromadu a haldu; stoh je výrazne rýchlejší ako hromada.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka

Základ pre porovnanieStohhalda
základnéPamäť je alokovaná v (LIFO) Last in first out fashion.Pamäť je alokovaná v náhodnom poradí.
Pridelenie a pridelenieautomatickýManuálny
nákladymenejviac
uskutočnenieusilovnejednoduchý
vyvolanieO (N)O (1)
ProblémNedostatok pamäteFragmentácia pamäte
Miesto referencievynikajúciprimeraný
flexibilitaPevná veľkosť a nie je flexibilnáZmena veľkosti je možná
Čas prístupurýchlejšípomalší


Definícia zásobníka

Priraďovanie zásobníkov sa riadi stratégiou LIFO (Last in first out) na prideľovanie pamäte procesom pomocou push a pop operácie. Každý blok v pamäti má pevnú veľkosť, ktorú nie je možné rozširovať alebo sťahovať. Posledný záznam v zásobníku je prístupný kedykoľvek. Zásobník používa súvislú pamäť, kde ukazovateľ pomenovaný ako základný stĺpec zásobníka odkazuje na prvý záznam zásobníka a ďalší ukazovateľ pomenovaný ako horný koniec zásobníka odkazuje na posledný záznam zásobníka.

Zásobník tiež podporuje volania funkcií. Volanie funkcie môže držať kolekciu zásobníkov, ktorá sa nazýva rám zásobníkov. Iným názvom rámca zásobníka je aktivačný záznam v con kompilátore, ktorý ukladá dáta použité v čase kompilácie programu. Kedykoľvek sa funkcia nazýva, rám zásobníka sa zatlačí do zásobníka.


Rámec zásobníka pozostáva z adries alebo hodnôt parametra funkcie a návratovej adresy, čo znamená, kde by sa mal ovládací prvok vrátiť po dokončení vykonania funkcie.

Definícia haldy

Priraďovanie haldy sa neriadi jednoznačným prístupom; skôr umožňuje náhodné priradenie a priradenie pamäte. Požiadavka na priradenie procesu vráti s ukazovateľom pridelenú oblasť pamäte v haldy a proces získa prístup k oblasti vyhradenej pamäte prostredníctvom ukazovateľa.

Deallokácia sa vykonáva prostredníctvom žiadosti o deallokáciu, ktorá sa líši od zásobníka, v ktorom sa automaticky prideľuje pamäť. Hromada vyvíja diery v alokácii pamäte, keď sa vytvárajú a uvoľňujú dátové štruktúry. Používa sa za behu.

  1. V zásobníku sa prideľovanie a prideľovanie vykonáva pomocou CPU a je automatické, zatiaľ čo v halde to musí urobiť programátor manuálne.
  2. Manipulácia s rámom haldy je nákladnejšia ako manipulácia s rámom zásobníka.
  3. Implementácia zásobníka je zložitá. Naopak, implementácia haldy je jednoduchá.
  4. Volanie funkcie v zásobníku trvá O (N) času. Oproti tomu trvá halda O (1).
  5. Implementácia zásobníka trpí hlavne problémom s nedostatkom pamäte. Naopak, hlavným problémom haldy je fragmentácia.
  6. Prístup k rámcu zásobníka je ľahší ako kôpka, pretože je obmedzená na malú oblasť pamäte a vždy zasiahne medzipamäť, ale haldy sú v pamäti rozptýlené, takže prístup k pamäti môže spôsobiť viac chýb v medzipamäte.
  7. Zásobník nie je flexibilný, pridelenú veľkosť pamäte nemožno zmeniť. Na druhej strane je halda flexibilná a pridelenú pamäť je možné zmeniť.
  8. Hromada zaberie viac času na prístup ako stoh.

záver

Priradenie zásobníka je rýchlejšie, ale zložité. Na druhej strane je halda pomalšia, ale jej implementácia je jednoduchšia ako zásobník. Halda je efektívnejšia ako zásobník.