Pri programovaní je potrebné ukladať výpočtové údaje. Tieto údaje sú uložené v pamäti. Miesta pamäte na ukladanie údajov v počítačovom programovaní sa nazývajú premenné. Premenné majú špecifický typ údajov. Preto je pamäť vyhradená na spustenie programov. Pamäť môže byť pridelená dvoma spôsobmi. Sú to statické alokácie pamäte a dynamické alokácie pamäte. Pri pridelení statickej pamäte sa po priradení pamäte nedá zmeniť. Pamäť sa nedá znovu použiť. Ale v dynamickom alokovaní pamäte, akonáhle je pamäť pridelená, môže sa zmeniť. kľúčový rozdiel medzi statickým a dynamickým pridelením pamäte je to pri prideľovaní statickej pamäte je veľkosť pamäte pevne stanovená, zatiaľ čo v prípade dynamickej alokácie pamäte je možné veľkosť pamäte zmeniť po jej pridelení..
1. Prehľad a kľúčový rozdiel
2. Čo je pridelenie statickej pamäte
3. Čo je dynamické prideľovanie pamäte
4. Podobnosti medzi pridelením statickej a dynamickej pamäte
5. Porovnanie vedľa seba - statické vs. dynamické prideľovanie pamäte v tabuľkovej forme
6. Zhrnutie
Pri prideľovaní statickej pamäte je pridelená pamäť pevná. Po pridelení pamäte sa už nedá zmeniť. Pamäť nie je možné zväčšiť alebo zmenšiť. Napríklad v jazyku C, ak programátor píše int x, čo znamená, že premenná môže ukladať celé číslo. Počet bajtov závisí od počítača. Môžu existovať aj polia. Napr. int x [5]; Toto x je pole, ktoré môže uchovávať sled údajov, ktoré sú rovnakého typu. Je možné uložiť päť celočíselných prvkov. Nemôže uložiť viac ako päť prvkov. V Java je možné pole vytvoriť ako int int [] = new int [5]; Pole 'arr' môže uložiť 5 celočíselných hodnôt a nemôže uložiť viac ako toto.
Obrázok 01: Metódy alokácie pamäte
Pri prideľovaní statickej pamäte zostanú po pridelení premenných trvalé. Po počiatočnom pridelení nemôže programátor zmeniť veľkosť pamäte. Ak programátor pridelil pole, ktoré môže uložiť 10 prvkov, nie je možné uložiť hodnoty viac, ako je zadané množstvo. Ak programátor spočiatku pridelil pole, ktoré môže pojať 10 prvkov, ale potrebovalo iba 5 prvkov, potom dôjde k strate pamäte. Táto pamäť už nie je potrebná, ale tiež nie je možné ju znova použiť. Statické pridelenie pamäte je pevné, ale implementácia je jednoduchá a ľahká a tiež rýchla.
Niekedy je potrebné zmeniť veľkosť pamäte. Takže pamäť môže byť pridelená dynamicky. V závislosti od vloženia a vymazania dátových prvkov môže dôjsť k zväčšeniu alebo zmenšeniu pamäte. Je známa ako dynamická alokácia pamäte.
V jazyku C, hlavovom súbore stdlib.h, existujú štyri funkcie pre dynamické prideľovanie pamäte. Sú calloc, malloc, realloc a zadarmo. Funkcia malloc () pridelí požadovanú veľkosť bajtov a vráti neplatný ukazovateľ smerujúci na prvý bajt alokovanej pamäte. Funkcia calloc () pridelí požadovanú veľkosť bajtov a inicializuje ich na nulu. Potom vráti do pamäte prázdny ukazovateľ. Funkcia free () sa používa na prerozdelenie pridelenej pamäte. A funkcia realloc môže modifikovať predtým pridelenú pamäť. Po pridelení pamäte pomocou calloc alebo malloc je veľkosť pamäte pevná, ale môžu sa zväčšiť alebo zmenšiť pomocou funkcie realloc. V jazyku Java môžu byť kolekcie použité na dynamické prideľovanie pamäte.
Hlavnou výhodou dynamického prideľovania pamäte je, že šetrí pamäť. Programátor môže podľa potreby prideliť pamäť alebo uvoľniť pamäť. Pamäť môže byť počas vykonávania prerozdelená a môže ju uvoľniť, ak to nie je potrebné. Dynamické pridelenie pamäte je tiež efektívne ako pridelenie statickej pamäte. Jednou nevýhodou je, že implementácia dynamického prideľovania pamäte je zložitá.
Statické a dynamické prideľovanie pamäte | |
Statická alokácia pamäte je metóda alokácie pamäte a po jej pridelení je pevná. | Dynamické prideľovanie pamäte je spôsob alokácie pamäte a po pridelení pamäte sa môže zmeniť. |
modifikácie | |
Pri alokácii statickej pamäte nie je možné zmeniť veľkosť po počiatočnej alokácii. | Pri dynamickom prideľovaní pamäte môže byť pamäť minimalizovaná alebo maximalizovaná. |
uskutočnenie | |
Statická alokácia pamäte sa ľahko implementuje. | Implementácia dynamickej pamäte je zložitá. |
rýchlosť | |
V statickej pamäti je vykonávanie alokácie rýchlejšie ako dynamické alokovanie pamäte. | V dynamickej pamäti je vykonávanie alokácie pomalšie ako pridelenie statickej pamäte. |
Využitie pamäte | |
Pri prideľovaní statickej pamäte nie je možné znovu použiť nevyužitú pamäť. | Dynamické prideľovanie pamäte umožňuje opätovné použitie pamäte. Programátor môže podľa potreby prideliť viac pamäte. V prípade potreby môže pamäť uvoľniť. |
V programovaní sú statické alokácie pamäte a dynamické alokácie pamäte dva mechanizmy na alokovanie pamäte. Rozdiel medzi statickou a dynamickou alokáciou pamäte je v tom, že v alokácii statickej pamäte, keď je alokovaná pamäť, je veľkosť pamäte pevná, zatiaľ čo v dynamickej alokácii pamäte, akonáhle je pamäť pridelená, je možné veľkosť pamäte zmeniť. Programátor sa môže rozhodnúť, či má byť pamäť statická alebo dynamická v závislosti od aplikácie.
Môžete si stiahnuť verziu tohto článku vo formáte PDF a použiť ju na účely offline podľa citácie. Stiahnite si verziu PDF tu: Rozdiel medzi statickým a dynamickým pridelením pamäte
1.Kayal, Somnath. "SOMNATH KAYAL." Rozdiel medzi pridelením statickej pamäte a dynamickým pridelením pamäte, 1. január 1970. K dispozícii tu
2.tutorialspoint.com. „Polia v C.“ Bod. K dispozícii tu
3.nareshtechnologies. Statická pamäť vs. dynamická pamäť Výukový program v jazyku C, Naresh i Technologies, 19. septembra 2016. K dispozícii tu