Erinevus staatilise ja dünaamilise mälu eraldamise vahel

Sisukord:

Erinevus staatilise ja dünaamilise mälu eraldamise vahel
Erinevus staatilise ja dünaamilise mälu eraldamise vahel

Video: Erinevus staatilise ja dünaamilise mälu eraldamise vahel

Video: Erinevus staatilise ja dünaamilise mälu eraldamise vahel
Video: Cambridge Audio Alva TT V2 kõrgetasemelise võimendiga heli Note I Zero Monitor Audio Siver 500 2024, Juuli
Anonim

Võtmete erinevus – staatiline vs dünaamiline mälu eraldamine

Programmeerimisel on vaja arvutusandmeid salvestada. Need andmed salvestatakse mällu. Arvutiprogrammeerimises andmete salvestamise mälukohti nimetatakse muutujateks. Muutujatel on konkreetne andmetüüp. Seetõttu eraldatakse mälu programmide käitamiseks. Mälu saab eraldada kahel viisil. Need on staatiline mälu jaotamine ja dünaamiline mälu eraldamine. Staatilise mälu jaotamise korral ei saa pärast mälu eraldamist seda muuta. Mälu ei ole korduvkasutatav. Kuid dünaamilise mälu jaotamise korral saab seda muuta, kui mälu on eraldatud. Peamine erinevus staatilise ja dünaamilise mälu jaotamise vahel on see, et staatilise mälu jaotamise korral, kui mälu on eraldatud, on mälu suurus fikseeritud, samas kui dünaamilise mälu jaotamise korral saab mälu suurust muuta, kui mälu on eraldatud.

Mis on staatiline mälu eraldamine?

Staatilise mälu jaotamise korral on eraldatud mälu fikseeritud. Kui mälu on eraldatud, ei saa seda enam muuta. Mälu ei saa suurendada ega vähendada. Näiteks C-keeles, kui programmeerija kirjutab int x, mis tähendab, et muutuja saab salvestada täisarvu väärtuse. Baitide arv oleneb arvutist. Võib olla ka massiive. Nt. int x [5]; See x on massiiv, mis võib salvestada sama tüüpi andmete jada. See võib salvestada viis täisarvu elementi. See ei saa salvestada rohkem kui viis elementi. Javas saab massiivi luua kujul, int arr=new int[5]; Massiivi "arr" saab salvestada 5 täisarvu ja ei saa salvestada rohkem.

Staatilise ja dünaamilise mälu eraldamise erinevus
Staatilise ja dünaamilise mälu eraldamise erinevus
Staatilise ja dünaamilise mälu eraldamise erinevus
Staatilise ja dünaamilise mälu eraldamise erinevus

Joonis 01: Mälu eraldamise meetodid

Staatilise mälu jaotamise korral jäävad muutujad pärast jaotamist püsivaks. Pärast esialgset eraldamist ei saa programmeerija mälu suurust muuta. Kui programmeerija eraldas massiivi, mis suudab salvestada 10 elementi, ei ole võimalik salvestada väärtusi, mis on suuremad kui määratud summa. Kui programmeerija eraldas algselt massiivi, mis mahutab 10 elementi, kuid vajas ainult 5 elementi, siis on tegemist mälu raiskamisega. Seda mälu pole enam vaja, kuid seda pole võimalik ka uuesti kasutada. Staatiline mälujaotus on fikseeritud, kuid juurutamine on lihtne ja lihtne ning kiire.

Mis on dünaamiline mälu eraldamine?

Mõnikord on vaja mälu suurust muuta. Nii saab mälu dünaamiliselt eraldada. Sõltuv alt andmeelementide sisestamisest ja kustutamisest võib mälu kasvada või kahaneda. Seda tuntakse kui dünaamilist mälujaotust.

C-keeles stdlib.h päisefailis on dünaamilise mälu eraldamiseks neli funktsiooni. Need on calloc, malloc, realloc ja tasuta. Funktsioon malloc() eraldab vajaliku suuruse baite ja tagastab tühiku osuti, mis osutab eraldatud mälu esimesele baidile. Funktsioon calloc() eraldab vajaliku suuruse baite ja lähtestab need nulliks. Seejärel tagastab mällu tühja kursori. Funktsiooni free() kasutatakse eraldatud mälu ümberjaotamiseks. Ja realloc funktsioon saab muuta varem eraldatud mälu. Pärast mälu eraldamist calloci või malloci abil on mälu suurus fikseeritud, kuid seda saab funktsiooni realloc abil suurendada või vähendada. Javas saab kogusid kasutada dünaamilise mälu eraldamiseks.

Dünaamilise mälujaotuse peamine eelis on see, et see säästab mälu. Programmeerija saab vajadusel mälu eraldada või mälu vabastada. Mälu saab täitmise ajal ümber jaotada ja see võib vabastada mälu, kui seda pole vaja. Dünaamiline mälu jaotamine on ka tõhusam kui staatiline mälu eraldamine. Üks puudus on see, et dünaamilise mälujaotuse rakendamine on keeruline.

Millised on staatilise ja dünaamilise mälu eraldamise sarnasused?

  • Mõlemad on mälu eraldamise mehhanismid.
  • Programmeerija peaks mõlemat käsitsi rakendama.

Mis vahe on staatilisel ja dünaamilisel mälu eraldamisel?

Staatiline vs dünaamiline mälujaotus

Staatiline mälu eraldamine on mälu eraldamise meetod ja kui mälu on eraldatud, siis see fikseeritakse. Dünaamiline mälu eraldamine on mälu eraldamise meetod ja kui mälu on eraldatud, saab seda muuta.
Muudatus
Staatilise mälujaotuse korral ei ole pärast esialgset eraldamist võimalik suurust muuta. Dünaamilise mälu jaotamise korral saab mälu vastav alt minimeerida või maksimeerida.
Rakendamine
Staatilist mälu eraldamist on lihtne rakendada. Dünaamilist mälu eraldamist on keeruline rakendada.
Kiirus
Staatilises mälus on eraldamise täitmine kiirem kui dünaamiline mälu eraldamine. Dünaamilises mälus on eraldamise täitmine aeglasem kui staatilise mälu eraldamise puhul.
Mälukasutus
Staatilise mälu jaotamise korral ei saa kasutamata mälu uuesti kasutada. Dünaamiline mälujaotus võimaldab mälu uuesti kasutada. Vajadusel saab programmeerija eraldada rohkem mälu. Vajadusel saab ta mälu vabastada.

Kokkuvõte – staatiline vs dünaamiline mälu eraldamine

Programmeerimisel on staatiline mälu jaotamine ja dünaamiline mälu eraldamine kaks mälu eraldamise mehhanismi. Staatilise ja dünaamilise mälu eraldamise erinevus seisneb selles, et staatilise mälu jaotamise korral, kui mälu on eraldatud, on mälu suurus fikseeritud, samas kui dünaamilise mälu jaotamise korral saab mälu suurust pärast mälu eraldamist muuta. Programmeerija saab sõltuv alt rakendusest otsustada, kas mälu peaks olema staatiline või dünaamiline.

Laadige alla PDF staatilise ja dünaamilise mälu eraldamise kohta

Saate alla laadida selle artikli PDF-versiooni ja kasutada seda võrguühenduseta kasutamiseks vastav alt tsitaadi märkusele. Laadige PDF-versioon alla siit: Staatilise ja dünaamilise mälu eraldamise erinevus

Soovitan: