Razlika između statičke i dinamičke alokacije memorije

Sadržaj:

Razlika između statičke i dinamičke alokacije memorije
Razlika između statičke i dinamičke alokacije memorije

Video: Razlika između statičke i dinamičke alokacije memorije

Video: Razlika između statičke i dinamičke alokacije memorije
Video: CS50 2013 - Week 10, continued 2024, Novembar
Anonim

Ključna razlika – statička naspram dinamičke alokacije memorije

U programiranju je potrebno pohraniti računske podatke. Ovi podaci se pohranjuju u memoriju. Memorijske lokacije za pohranjivanje podataka u kompjuterskom programiranju poznate su kao varijable. Varijable imaju specifičan tip podataka. Stoga se memorija dodjeljuje za pokretanje programa. Memorija se može dodijeliti na dva načina. To su statička alokacija memorije i dinamička dodjela memorije. U statičkoj dodjeli memorije, kada je memorija dodijeljena, ne može se promijeniti. Memorija se ne može ponovo koristiti. Ali kod dinamičke alokacije memorije, kada je memorija dodijeljena može se promijeniti. Ključna razlika između statičke i dinamičke alokacije memorije je u tome što je u statičkoj dodjeli memorije kada se memorija dodijeli, veličina memorije je fiksna, dok je kod dinamičke dodjele memorije, kada se memorija dodijeli, veličina memorije se može promijeniti..

Šta je statička alokacija memorije?

U statičkoj dodjeli memorije, dodijeljena memorija je fiksna. Jednom kada je memorija dodijeljena, ne može se promijeniti. Memorija se ne može povećati ili smanjiti. Na primjer, u jeziku C ako programer zapiše int x, što znači da varijabla može pohraniti cjelobrojnu vrijednost. Broj bajtova zavisi od računara. Mogu postojati i nizovi. Npr. int x [5]; Ovaj x je niz koji može pohraniti niz podataka istog tipa. Može pohraniti pet cjelobrojnih elemenata. Ne može pohraniti više od pet elemenata. U Javi, niz se može kreirati kao, int arr=new int[5]; Niz 'arr' može pohraniti 5 cijelih vrijednosti i ne može pohraniti više od toga.

Razlika između statičke i dinamičke alokacije memorije
Razlika između statičke i dinamičke alokacije memorije
Razlika između statičke i dinamičke alokacije memorije
Razlika između statičke i dinamičke alokacije memorije

Slika 01: Metode raspodjele memorije

U statičkoj alokaciji memorije, kada se varijable dodijele, one ostaju trajne. Nakon inicijalne alokacije, programator ne može promijeniti veličinu memorije. Ako je programer dodijelio niz koji može pohraniti 10 elemenata, nije moguće pohraniti vrijednosti veće od navedenog iznosa. Ako je programer u početku dodijelio niz koji može sadržavati 10 elemenata, ali mu je potrebno samo 5 elemenata, onda dolazi do gubitka memorije. Ta memorija više nije potrebna, ali isto tako nije moguće ponovo koristiti memoriju. Statička alokacija memorije je fiksna, ali implementacija je jednostavna i laka, a također je brza.

Šta je dinamička alokacija memorije?

Ponekad je potrebno promijeniti veličinu memorije. Dakle, memorija se može dodijeliti dinamički. U zavisnosti od umetanja i brisanja elemenata podataka, memorija se može povećati ili smanjiti. Poznato je kao dinamička alokacija memorije.

U jeziku C, stdlib.h header fajlu, postoje četiri funkcije za dinamičku alokaciju memorije. Oni su calloc, malloc, realloc i besplatni. Funkcija malloc() dodjeljuje potrebnu veličinu bajtova i vraća void pokazivač, pokazujući prvi bajt dodijeljene memorije. Funkcija calloc() dodjeljuje potrebnu veličinu bajtova i inicijalizira ih na nulu. Zatim vraća void pokazivač u memoriju. Funkcija free() koristi se za preraspodjelu dodijeljene memorije. Funkcija realloc može modificirati prethodno dodijeljenu memoriju. Nakon dodjele memorije pomoću calloc-a ili malloc-a, veličina memorije je fiksna, ali se može povećati ili smanjiti korištenjem funkcije realloc. U Javi, kolekcije se mogu koristiti za dinamičku dodjelu memorije.

Glavna prednost dinamičke alokacije memorije je da štedi memoriju. Programator može dodijeliti memoriju ili osloboditi memoriju po potrebi. Memorija se može ponovo dodijeliti tokom izvršavanja i može osloboditi memoriju kada nije potrebna. Dinamička alokacija memorije je također efikasna od dodjeljivanja statičke memorije. Jedan nedostatak je što je implementacija dinamičke alokacije memorije složena.

Koje su sličnosti između statičke i dinamičke alokacije memorije?

  • Oba su mehanizmi alokacije memorije.
  • Programer bi trebao implementirati oba programa ručno.

Koja je razlika između statičke i dinamičke alokacije memorije?

Statička vs dinamička raspodjela memorije

Statička alokacija memorije je metoda dodjeljivanja memorije, a kada se memorija dodijeli, ona je fiksna. Dinamička alokacija memorije je metoda dodjele memorije, a kada se memorija dodijeli, može se promijeniti.
Izmjena
U statičkoj dodjeli memorije, nije moguće promijeniti veličinu nakon početne dodjele. U dinamičkoj alokaciji memorije, memorija se može minimizirati ili maksimizirati u skladu s tim.
Implementacija
Statička alokacija memorije je jednostavna za implementaciju. Dinamička alokacija memorije je složena za implementaciju.
Brzina
U statičkoj memoriji, izvršenje alokacije je brže od dinamičke alokacije memorije. U dinamičkoj memoriji, izvršenje alokacije je sporije od dodjeljivanja statičke memorije.
Iskorišćavanje memorije
U statičkoj alokaciji memorije, ne može se ponovo koristiti neiskorištena memorija. Dinamička alokacija memorije omogućava ponovno korištenje memorije. Programator može dodijeliti više memorije kada je to potrebno. On može osloboditi memoriju kada je potrebno.

Sažetak – statička vs dinamička raspodjela memorije

U programiranju, statička alokacija memorije i dinamička dodjela memorije su dva mehanizma za dodjelu memorije. Razlika između statičke i dinamičke alokacije memorije je u tome što je kod statičke alokacije memorije kada se memorija dodijeli, veličina memorije je fiksna, dok je kod dinamičke dodjele memorije, kada se memorija dodijeli, veličina memorije se može promijeniti. Programer može odlučiti hoće li memorija biti statična ili dinamička ovisno o aplikaciji.

Preuzmite PDF o raspodjeli statičke i dinamičke memorije

Možete preuzeti PDF verziju ovog članka i koristiti ga za vanmrežne svrhe prema napomeni o citatu. Molimo preuzmite PDF verziju ovdje: Razlika između statičke i dinamičke dodjele memorije

Preporučuje se: