Ključna razlika – dodeljevanje statičnega in dinamičnega pomnilnika
Pri programiranju je potrebno shranjevati računske podatke. Ti podatki so shranjeni v pomnilniku. Pomnilniške lokacije za shranjevanje podatkov v računalniškem programiranju so znane kot spremenljivke. Spremenljivke imajo določen tip podatkov. Zato je pomnilnik dodeljen za izvajanje programov. Pomnilnik je mogoče dodeliti na dva načina. To sta statična dodelitev pomnilnika in dinamična dodelitev pomnilnika. Pri statičnem dodeljevanju pomnilnika, ko je pomnilnik enkrat dodeljen, ga ni več mogoče spremeniti. Pomnilnik ni za ponovno uporabo. Toda pri dinamični dodelitvi pomnilnika, ko je pomnilnik dodeljen, ga je mogoče spremeniti. Ključna razlika med statično in dinamično dodelitvijo pomnilnika je, da je pri statičnem dodeljevanju pomnilnika, ko je pomnilnik dodeljen, velikost pomnilnika fiksna, medtem ko je pri dinamičnem dodeljevanju pomnilnika, ko je pomnilnik dodeljen, velikost pomnilnika mogoče spremeniti.
Kaj je dodeljevanje statičnega pomnilnika?
Pri statičnem dodeljevanju pomnilnika je dodeljeni pomnilnik fiksen. Ko je pomnilnik enkrat dodeljen, ga ni več mogoče spremeniti. Pomnilnika ni mogoče povečati ali zmanjšati. Na primer, v jeziku C, če programer zapiše int x, kar pomeni, da lahko spremenljivka shrani celoštevilsko vrednost. Število bajtov je odvisno od računalnika. Lahko so tudi nizi. Npr. int x [5]; Ta x je matrika, ki lahko shrani zaporedje podatkov, ki so iste vrste. Lahko shrani pet celih elementov. Ne more shraniti več kot pet elementov. V Javi lahko matriko ustvarite kot, int arr=new int[5]; Matrika 'arr' lahko shrani 5 celih vrednosti in ne more več kot to.
Slika 01: Metode dodeljevanja pomnilnika
Pri statičnem dodeljevanju pomnilnika, ko so spremenljivke dodeljene, ostanejo trajne. Po začetni dodelitvi programer ne more spremeniti velikosti pomnilnika. Če je programer dodelil matriko, ki lahko shrani 10 elementov, ni mogoče shraniti vrednosti, ki presegajo navedeno količino. Če je programer prvotno dodelil matriko, ki lahko vsebuje 10 elementov, vendar je potreboval le 5 elementov, potem je prišlo do izgube pomnilnika. Ta pomnilnik ni več potreben, vendar ga tudi ni mogoče ponovno uporabiti. Dodeljevanje statičnega pomnilnika je določeno, vendar je izvedba preprosta in enostavna ter hitra.
Kaj je dinamična dodelitev pomnilnika?
Včasih je treba spremeniti velikost pomnilnika. Tako je pomnilnik mogoče dodeljevati dinamično. Glede na vstavljanje in brisanje podatkovnih elementov se lahko pomnilnik poveča ali zmanjša. Znana je kot dinamična dodelitev pomnilnika.
V jeziku C, datoteka glave stdlib.h, obstajajo štiri funkcije za dinamično dodeljevanje pomnilnika. So calloc, malloc, realloc in free. Funkcija malloc() dodeli zahtevano velikost bajtov in vrne prazen kazalec, ki kaže na prvi bajt dodeljenega pomnilnika. Funkcija calloc() dodeli zahtevano velikost bajtov in jih inicializira na nič. Nato vrne prazen kazalec v pomnilnik. Funkcija free() se uporablja za ponovno dodelitev dodeljenega pomnilnika. In funkcija realloc lahko spremeni predhodno dodeljen pomnilnik. Po dodelitvi pomnilnika z uporabo calloc ali malloc je velikost pomnilnika fiksna, vendar jo je mogoče povečati ali zmanjšati s funkcijo realloc. V Javi se lahko zbirke uporabljajo za dinamično dodeljevanje pomnilnika.
Glavna prednost dinamičnega dodeljevanja pomnilnika je, da prihrani pomnilnik. Programator lahko po potrebi dodeli pomnilnik ali ga sprosti. Pomnilnik je mogoče prerazporediti med izvajanjem in ga lahko sprostite, ko ni potreben. Dinamično dodeljevanje pomnilnika je prav tako učinkovito kot dodeljevanje statičnega pomnilnika. Ena pomanjkljivost je, da je izvajanje dinamičnega dodeljevanja pomnilnika zapleteno.
Kakšne so podobnosti med statičnim in dinamičnim dodeljevanjem pomnilnika?
- Oba sta mehanizma za dodeljevanje pomnilnika.
- Oboje mora programer implementirati ročno.
Kakšna je razlika med statičnim in dinamičnim dodeljevanjem pomnilnika?
Statična ali dinamična dodelitev pomnilnika |
|
Statična dodelitev pomnilnika je metoda dodeljevanja pomnilnika in ko je pomnilnik dodeljen, je fiksen. | Dinamično dodeljevanje pomnilnika je metoda dodeljevanja pomnilnika in ko je pomnilnik dodeljen, ga je mogoče spremeniti. |
Sprememba | |
Pri statičnem dodeljevanju pomnilnika ni mogoče spremeniti velikosti po začetni dodelitvi. | Pri dinamičnem dodeljevanju pomnilnika se lahko pomnilnik ustrezno zmanjša ali poveča. |
Izvedba | |
Dodeljevanje statičnega pomnilnika je enostavno izvesti. | Dinamično dodeljevanje pomnilnika je kompleksno implementirati. |
Hitrost | |
V statičnem pomnilniku je izvajanje dodeljevanja hitrejše od dinamičnega dodeljevanja pomnilnika. | V dinamičnem pomnilniku je izvajanje dodeljevanja počasnejše od dodeljevanja statičnega pomnilnika. |
Uporaba pomnilnika | |
Pri statičnem dodeljevanju pomnilnika ni mogoče znova uporabiti neuporabljenega pomnilnika. | Dinamična dodelitev pomnilnika omogoča ponovno uporabo pomnilnika. Programer lahko po potrebi dodeli več pomnilnika. Po potrebi lahko sprosti spomin. |
Povzetek – dodeljevanje statičnega in dinamičnega pomnilnika
V programiranju sta statično dodeljevanje pomnilnika in dinamično dodeljevanje pomnilnika dva mehanizma za dodeljevanje pomnilnika. Razlika med statično in dinamično dodelitvijo pomnilnika je v tem, da je pri statični dodelitvi pomnilnika, ko je pomnilnik dodeljen, velikost pomnilnika fiksna, medtem ko je pri dinamični dodelitvi pomnilnika, ko je pomnilnik dodeljen, velikost pomnilnika mogoče spremeniti. Programer se lahko odloči, ali naj bo pomnilnik statičen ali dinamičen, odvisno od aplikacije.
Prenesite PDF o dodelitvi statičnega in dinamičnega pomnilnika
Lahko prenesete PDF različico tega članka in jo uporabite za namene brez povezave v skladu z opombo o citiranju. Prenesite PDF različico tukaj: Razlika med statično in dinamično dodelitvijo pomnilnika