Diferența dintre stivă și grămadă

Autor: Laura McKinney
Data Creației: 1 Aprilie 2021
Data Actualizării: 13 Mai 2024
Anonim
România în Direct: Negocierile de pace dintre Ucraina și Rusia eșuează. Este și războiul nostru?
Video: România în Direct: Negocierile de pace dintre Ucraina și Rusia eșuează. Este și războiul nostru?

Conţinut


Stack and Heap sunt segmentele de memorie utilizate în tehnicile de alocare a memoriei. Diferența principală între Stack și heap este că stack-ul implică alocarea liniară și secvențială a memoriei care este utilizată în alocarea statică a memoriei, în timp ce heap-ul acționează ca un grup de spații de stocare care a alocat memoria aleatoriu (alocarea dinamică a memoriei).

Viteza este parametrul principal care distinge stiva și grămada; o stivă este semnificativ mai rapidă decât o grămadă.

  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Concluzie

Diagramă de comparație

Baza de comparațieGrămadăMorman
De bazăMemoria este alocată în (LIFO) Ultima la prima ieșire.Memoria este alocată în ordine aleatorie.
Alocare și alocareAutomatManual
CostMai puținMai Mult
Punerea în aplicareGreuUşor
InvocareaPE)O (1)
ProblemaLipsa de memorieFragmentarea memoriei
Localitatea de referințăExcelentAdecvat
FlexibilitateDimensiune fixă ​​și nu este flexibilRedimensionarea este posibilă
Timpul de accesMai repedeMai lent


Definiția Stack

Alocarea stivei urmează o strategie LIFO (Last in first out) pentru atribuirea memoriei proceselor cu ajutorul funcționării push și pop. Fiecare bloc din memorie are dimensiuni fixe care nu pot fi extinse sau contractate. Ultima intrare în stivă este accesibilă în orice moment. Stack folosește o memorie contiguă în care un indicator numit drept bază de stivă indică prima intrare a stivei și un alt indicator numit drept partea superioară a stivei indică ultima intrare a stivei.

Stack sprijină și apelurile funcționale. Un apel funcțional poate reține o colecție de intrări de stivă, este cunoscut sub numele de cadru de stivă. Un alt nume al cadrului stivei este înregistrarea de activare în conținutul compilatorului, deoarece stochează datele utilizate în momentul compilării programelor. Ori de câte ori o funcție este numită rama stivei este împinsă în stivă.

Un cadru de stivă este alcătuit din adrese sau valori ale parametrului funcției și ale adresei de retur, ceea ce înseamnă unde trebuie returnat controlul după finalizarea executării funcției.


Definiția Heap

Alocarea haldei nu urmează nicio abordare certă; mai degrabă permite alocarea și dezasignarea aleatorie a memoriei. O cerere de alocare efectuată de un proces returnează cu un pointer la zona de memorie alocată într-un morman și procesul accesează zona de memorie alocată prin pointer.

Distribuirea este efectuată prin solicitarea de alocare, diferită până la stiva în care memoria este alocată automat. Heap dezvoltă găuri în alocarea memoriei atunci când structurile de date sunt construite și eliberate. Este folosit la timpul de execuție.

  1. Într-o stivă, alocarea și alocarea se face de către CPU și este automată, în timp ce, în grămadă, trebuie să fie făcută de programator manual.
  2. Manipularea cadrului heap este mai costisitoare decât manipularea cadrului de stivă.
  3. Implementarea unei stive este complexă. Spre deosebire, implementarea unui morman este simplă.
  4. Un apel funcțional în stivă durează O (N) timp. În schimb, durează O (1) timp într-o grămadă.
  5. Implementarea stivei suferă în principal de problema deficitului de memorie. Dimpotrivă, problema principală dintr-o grămadă este fragmentarea.
  6. Accesul la un cadru de stivă este mai ușor decât grămada, deoarece stiva se limitează la mica regiune a memoriei și atinge întotdeauna memoria cache, dar cadrele de grădină sunt dispersate în toată memoria, astfel încât accesarea memoriei poate provoca mai multe lipsuri de memorie în cache.
  7. Stack-ul nu este flexibil, dimensiunea memoriei alocate nu poate fi modificată. Pe de altă parte, o grămadă este flexibilă, iar memoria alocată poate fi modificată.
  8. Un morman necesită mai mult timp de acces decât o stivă.

Concluzie

Alocarea stivelor este mai rapidă, dar complexă. Pe de altă parte, o grămadă este mai lentă, dar implementarea ei este mai simplă decât o stivă. Mormanul este mai eficient decât stiva.