Rozdíl mezi statickým a dynamickým přidělením paměti

Klíčový rozdíl - statické vs. dynamické přidělení paměti
 

Při programování je nutné ukládat výpočetní data. Tato data jsou uložena v paměti. Umístění paměti pro ukládání dat v počítačovém programování je známé jako proměnné. Proměnné mají specifický datový typ. Proto je paměť přidělena ke spuštění programů. Paměť může být přidělena dvěma způsoby. Jsou to statické přidělení paměti a dynamické přidělení paměti. Při přidělení statické paměti nelze po přiřazení paměti změnit. Paměť nelze znovu použít. Ale v dynamickém přidělování paměti, jakmile je přidělena paměť, lze ji změnit. klíčový rozdíl mezi statickou a dynamickou alokací paměti je to v alokaci statické paměti, jakmile je paměť přidělena, je velikost paměti pevná, zatímco v dynamickém přidělování paměti, jakmile je paměť přidělena, lze velikost paměti změnit.

OBSAH

1. Přehled a klíčový rozdíl
2. Co je přidělování statické paměti
3. Co je dynamické přidělení paměti
4. Podobnosti mezi statickým a dynamickým přidělením paměti
5. Porovnání vedle sebe - statické vs. dynamické přidělení paměti v tabulkové formě
6. Shrnutí

Co je alokace statické paměti?

Při přidělování statické paměti je přidělená paměť pevná. Jakmile je paměť přidělena, nelze ji změnit. Paměť nelze zvětšit nebo zmenšit. Například v jazyce C, pokud programátor zapíše int x, což znamená, že proměnná může uložit celočíselnou hodnotu. Počet bytů závisí na počítači. Mohou existovat také pole. Např. int x [5]; Toto x je pole, které může ukládat posloupnost dat stejného typu. Může uložit pět celočíselných prvků. Nelze uložit více než pět prvků. V Javě lze pole vytvořit jako int int [] = new int [5]; Pole 'arr' může uložit 5 celočíselných hodnot a nemůže uložit více než to.

Obrázek 01: Metody alokace paměti

Při přidělení statické paměti zůstanou po přiřazení proměnných trvalé. Po počátečním přidělení nemůže programátor změnit velikost paměti. Pokud programátor přidělil pole, které může uložit 10 prvků, není možné ukládat hodnoty více, než je uvedená částka. Pokud programátor zpočátku přidělil pole, které pojme 10 prvků, ale potřebuje pouze 5 prvků, pak dojde ke ztrátě paměti. Tato paměť již není potřeba, ale také ji nelze znovu použít. Statické přidělení paměti je pevné, ale implementace je jednoduchá a snadná a také rychlá.

Co je dynamické přidělení paměti?

Někdy je nutné změnit velikost paměti. Takže paměť může být přidělena dynamicky. V závislosti na vložení a odstranění datových prvků může paměť narůstat nebo zmenšit. Je známá jako dynamická alokace paměti.

V jazyce C, souboru záhlaví stdlib.h, existují čtyři funkce pro dynamické přidělování paměti. Jsou calloc, malloc, realloc a zdarma. Funkce malloc () přiděluje požadovanou velikost bytů a vrací ukazatel prázdnoty směřující na první bajt přidělené paměti. Funkce calloc () přiděluje požadovanou velikost bytů a inicializuje je na nulu. Poté vrací ukazatel paměti do paměti. Funkce free () se používá k přerozdělení přidělené paměti. A funkce realloc může upravit dříve přidělenou paměť. Po alokaci paměti pomocí calloc nebo malloc je velikost paměti pevná, ale lze ji pomocí funkce realloc zvětšit nebo zmenšit. V Javě mohou být kolekce použity pro dynamické přidělování paměti.

Hlavní výhodou dynamického přidělování paměti je, že šetří paměť. Programátor může přidělit paměť nebo uvolnit paměť podle potřeby. Během provádění může být paměť znovu přidělena a může být uvolněna, pokud není vyžadována. Dynamické přidělení paměti je také efektivní než přidělování statické paměti. Jednou nevýhodou je, že implementace dynamického přidělování paměti je složitá.

Jaké jsou podobnosti mezi statickým a dynamickým přidělením paměti?

  • Oba jsou mechanismy přidělování paměti.
  • Oba by měl být implementován programátorem ručně.

Jaký je rozdíl mezi statickým a dynamickým přidělením paměti?

Statické vs. dynamické přidělení paměti

Statická alokace paměti je metoda alokace paměti a jakmile je paměť přidělena, je pevná. Dynamické alokace paměti je způsob alokace paměti a jakmile je paměť přidělena, lze ji změnit.
 Modifikace
Při přidělení statické paměti není možné změnit velikost po počátečním přidělení. Při dynamickém přidělování paměti může být paměť minimalizována nebo maximalizována.
Implementace
Provádění statické paměti je snadné. Implementace dynamické paměti je složitá.
 Rychlost
Ve statické paměti je provádění přidělení rychlejší než dynamické přidělení paměti. V dynamické paměti je provádění přidělení pomalejší než přidělování statické paměti.
Využití paměti
Při přidělování statické paměti nelze znovu použít nevyužitou paměť. Dynamické přidělení paměti umožňuje opětovné použití paměti. Programátor může v případě potřeby přidělit více paměti. V případě potřeby může paměť uvolnit.

souhrn - Statické vs. dynamické přidělení paměti

V programování jsou statická alokace paměti a dynamická alokace paměti dva mechanismy pro alokaci paměti. Rozdíl mezi statickou a dynamickou alokací paměti je v tom, že v alokaci statické paměti, jakmile je paměť přidělena, je velikost paměti pevná, zatímco v dynamickém přidělování paměti, jakmile je paměť přidělena, lze velikost paměti změnit. Programátor se může rozhodnout, zda má být paměť statická nebo dynamická v závislosti na aplikaci.

Stáhněte si PDF statické a dynamické přidělení paměti

Můžete si stáhnout PDF verzi tohoto článku a použít ji pro účely offline podle citace. Stáhněte si verzi PDF zde: Rozdíl mezi statickým a dynamickým přidělením paměti

Odkaz:

1.Kayal, Somnath. "SOMNATH KAYAL." Rozdíl mezi přidělením statické paměti a dynamickým přidělením paměti, 1. ledna 1970. K dispozici zde 
2.tutorialspoint.com. "Pole v C." Bod. K dispozici zde 
3.nareshtechnologie. Statická paměť vs. dynamická paměť Výukový program v jazyce C, Naresh i Technologies, 19. září 2016. K dispozici zde