Skillnaden mellan stack och hög

Författare: Laura McKinney
Skapelsedatum: 1 April 2021
Uppdatera Datum: 13 Maj 2024
Anonim
Skillnaden mellan stack och hög - Teknologi
Skillnaden mellan stack och hög - Teknologi

Innehåll


Stack och Heap är minnessegmenten som används i minnesallokeringstekniker. Den primära skillnaden mellan stack och heap är att stacken involverar linjär och sekventiell allokering av minnet som används i statisk minnesallokering medan högen fungerar som en pool av lagringsområde som allokerade minnet slumpmässigt (dynamisk minnesallokering).

Hastighet är den viktigaste parametern som skiljer stapel och hög; en bunt är betydligt snabbare än en hög.

  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Slutsats

Jämförelsediagram

Grund för jämförelseStackHögen
GrundläggandeMinne tilldelas på (LIFO) Senast på första sättet.Minne tilldelas i slumpmässig ordning.
Tilldelning och tilldelningAutomatiskManuell
KostaMindreMer
GenomförandeHårdLätt
åkallaPÅ)O (1)
ProblemBrist på minneMinnesfragmentering
ReferensortExcellentTillräcklig
FlexibilitetFast storlek och är inte flexibelÄndra storlek är möjlig
ÅtkomsttidSnabbarelångsam~~POS=TRUNC


Definition av Stack

Stackallokering följer en LIFO-strategi (Last in first out) för att tilldela minnet till processerna med hjälp av push och pop-operation. Varje block i minnet har en fast storlek som inte kan utökas eller kontraheras. Den sista posten i stacken är tillgänglig när som helst. Stack använder ett sammanhängande minne där en pekare som heter stapelbas pekar på den första posten i stacken och en annan pekare som kallas som toppen av stacken pekar mot stackens sista post.

Stack stöder också funktionssamtal. Ett funktionssamtal kan innehålla en samling av stapelposter, kallas stapelramen. Ett annat namn på stapelramen är aktiveringsregistret i kompilatorns con eftersom den lagrar de data som användes vid programkompileringen. När en funktion kallas staplas ram in i bunten.

En stapelram består av antingen adresser eller värden för funktionens parameter och returadress som anger var kontrollen ska returneras efter att funktionen har genomförts.


Definition av Heap

Heapallokering följer inte någon bestämd strategi; snarare tillåter det slumpmässigt tilldelning och omfördelning av minnet. En tilldelningsbegäran av en process ger tillbaka med en pekare till det tilldelade minnesområdet i en hög, och processen får åtkomst till det tilldelade minnesområdet genom pekaren.

Deallokalisering utförs genom begäran om omlokalisering, som skiljer sig från stacken där minnet omfördelas automatiskt. Heap utvecklar hål i minnesallokering när datastrukturer byggs och frigörs. Det används vid körning.

  1. I en bunt utförs allokeringen och omfördelningen av CPU och sker automatiskt medan den i hög grad måste göras av programmeraren manuellt.
  2. Högstommehantering är dyrare än hantering av stapelramar.
  3. Implementering av en stack är komplex. I motsats till detta är implementeringen av en hög enkel.
  4. Ett funktionssamtal i stack tar O (N) -tid. Däremot tar det O (1) tid i en hög.
  5. Stack-implementering lider främst av minnesbristproblemet. Tvärtom, huvudfrågan i en hög är fragmentering.
  6. Tillgång till en stapelram är enklare än högen eftersom stacken är begränsad till den lilla minnesregionen och den träffar alltid cachen, men högramar är spridda i hela minnet så att minnesåtkomst kan orsaka fler cachemissningar.
  7. Bunten är inte flexibel, den tilldelade minnesstorleken kan inte ändras. Å andra sidan är en hög flexibel och det tilldelade minnet kan ändras.
  8. En hög tar mer åtkomsttid än en bunt.

Slutsats

Stacktilldelningen är snabbare men komplex. Å andra sidan är en hög långsammare, men implementeringen är enklare än en stack. Heap är effektivare än stacken.