Pagrindinis skirtumas – statinis ir dinaminis atminties paskirstymas
Programuojant būtina saugoti skaičiavimo duomenis. Šie duomenys saugomi atmintyje. Atminties vietos duomenims saugoti kompiuterių programavime yra žinomos kaip kintamieji. Kintamieji turi tam tikrą duomenų tipą. Todėl atmintis yra skirta programoms paleisti. Atmintis gali būti paskirstyta dviem būdais. Tai yra statinis atminties paskirstymas ir dinaminis atminties paskirstymas. Paskirstant statinę atmintį, kai atmintis yra paskirstyta, jos pakeisti negalima. Atmintis nėra pakartotinai naudojama. Tačiau dinaminio atminties paskirstymo atveju, kai atmintis yra skirta, ją galima pakeisti. Pagrindinis skirtumas tarp statinio ir dinaminio atminties paskirstymo yra tas, kad paskirstant statinę atmintį atminties dydis yra fiksuotas, o paskirstant dinaminę atmintį, atminties dydis gali būti pakeistas.
Kas yra statinis atminties paskirstymas?
Statinio atminties paskirstymo atveju skirta atmintis yra fiksuota. Kai atmintis yra paskirstyta, jos pakeisti negalima. Atminties negalima nei padidinti, nei sumažinti. Pavyzdžiui, C kalba, jei programuotojas rašo int x, tai reiškia, kad kintamasis gali saugoti sveikojo skaičiaus reikšmę. Baitų skaičius priklauso nuo kompiuterio. Taip pat gali būti masyvai. Pvz. int x [5]; Šis x yra masyvas, kuriame galima saugoti to paties tipo duomenų seką. Jis gali saugoti penkis sveikųjų skaičių elementus. Jis negali saugoti daugiau nei penkių elementų. Java programoje masyvas gali būti sukurtas kaip, int arr=new int[5]; Masyvas „arr“gali saugoti 5 sveikųjų skaičių reikšmes ir negali saugoti daugiau nei jų.
01 pav.: atminties paskirstymo metodai
Statinio atminties paskirstymo atveju, kai kintamieji yra paskirstyti, jie išlieka nuolatiniai. Po pradinio paskirstymo programuotojas negali pakeisti atminties dydžio. Jei programuotojas paskyrė masyvą, kuriame galima saugoti 10 elementų, negalima saugoti reikšmių, viršijančių nurodytą kiekį. Jei programuotojas iš pradžių paskyrė masyvą, kuriame gali būti 10 elementų, bet prireikė tik 5 elementų, vadinasi, eikvojama atmintis. Ta atmintis nebereikalinga, bet ir pakartotinai panaudoti atminties negalima. Statinis atminties paskirstymas yra fiksuotas, tačiau įgyvendinimas paprastas ir lengvas, be to, jis yra greitas.
Kas yra dinaminis atminties paskirstymas?
Kartais reikia pakeisti atminties dydį. Taigi atmintis gali būti paskirstoma dinamiškai. Priklausomai nuo duomenų elementų įterpimo ir ištrynimo, atmintis gali didėti arba mažėti. Jis žinomas kaip dinaminis atminties paskirstymas.
C kalba, stdlib.h antraštės faile, yra keturios dinaminio atminties paskirstymo funkcijos. Jie yra calloc, malloc, realloc ir nemokami. Funkcija malloc () paskiria reikiamą baitų dydį ir grąžina tuščią rodyklę, nukreipiančią pirmąjį skirtos atminties baitą. Funkcija calloc() paskiria reikiamą baitų dydį ir inicijuoja juos iki nulio. Tada į atmintį grąžina tuščią rodyklę. Funkcija free () naudojama perskirstyti skirtą atmintį. O realloc funkcija gali modifikuoti anksčiau skirtą atmintį. Paskyrus atmintį naudojant calloc arba malloc, atminties dydis yra fiksuotas, tačiau juos galima padidinti arba sumažinti naudojant realloc funkciją. Java kolekcijos gali būti naudojamos dinaminiam atminties paskirstymui.
Pagrindinis dinaminio atminties paskirstymo pranašumas yra tai, kad taupoma atmintis. Programuotojas gali skirti atmintį arba atlaisvinti ją, jei reikia. Vykdant atmintį galima perskirstyti ir atlaisvinti atmintį, kai jos nereikia. Dinaminis atminties paskirstymas taip pat yra efektyvesnis nei statinis atminties paskirstymas. Vienas trūkumas yra tai, kad dinaminio atminties paskirstymo įgyvendinimas yra sudėtingas.
Kokie yra statinio ir dinaminio atminties paskirstymo panašumai?
- Abu yra atminties paskirstymo mechanizmai.
- Abu programuotojas turėtų įdiegti rankiniu būdu.
Kuo skiriasi statinis ir dinaminis atminties paskirstymas?
Statinis vs dinaminis atminties paskirstymas |
|
Statinis atminties paskirstymas yra atminties paskirstymo būdas, o kai atmintis paskirstoma, ji fiksuojama. | Dinaminis atminties paskirstymas yra atminties paskirstymo būdas, o kai atmintis paskirstoma, ją galima pakeisti. |
Modifikacija | |
Statinio atminties paskirstymo atveju neįmanoma pakeisti dydžio po pradinio paskirstymo. | Dinaminio atminties paskirstymo atveju atmintis gali būti atitinkamai sumažinta arba padidinta. |
Įdiegimas | |
Statinį atminties paskirstymą lengva įgyvendinti. | Dinaminį atminties paskirstymą sudėtinga įgyvendinti. |
Greitis | |
Statinėje atmintyje paskirstymas vykdomas greičiau nei dinaminis atminties paskirstymas. | Dinaminėje atmintyje paskirstymas vykdomas lėčiau nei statinis atminties paskirstymas. |
Atminties naudojimas | |
Statiškai paskirstant atmintį negalima pakartotinai panaudoti nepanaudotos atminties. | Dinaminis atminties paskirstymas leidžia pakartotinai naudoti atmintį. Jei reikia, programuotojas gali skirti daugiau atminties. Jis gali atlaisvinti atmintį, kai reikia. |
Santrauka – statinis ir dinaminis atminties paskirstymas
Programavimo metu statinis atminties paskirstymas ir dinaminis atminties paskirstymas yra du atminties paskirstymo mechanizmai. Skirtumas tarp statinio ir dinaminio atminties paskirstymo yra tas, kad paskirstant statinę atmintį, kai atmintis yra paskirstyta, atminties dydis yra fiksuotas, o dinaminio atminties paskirstymo atveju, kai atmintis yra paskirstyta, atminties dydis gali būti pakeistas. Programuotojas gali nuspręsti, ar atmintis turi būti statinė ar dinaminė, priklausomai nuo programos.
Atsisiųskite statinės ir dinaminės atminties paskirstymo PDF failą
Galite atsisiųsti šio straipsnio PDF versiją ir naudoti ją neprisijungus, kaip nurodyta citatos pastaboje. Atsisiųskite PDF versiją čia: Skirtumas tarp statinės ir dinaminės atminties paskirstymo