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

Sadržaj:

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

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

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

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

U programiranju je potrebno pohraniti računske podatke. Ti se podaci pohranjuju u memoriju. Memorijske lokacije za pohranu podataka u računalnom programiranju poznate su kao varijable. Varijable imaju određeni tip podataka. Stoga se memorija dodjeljuje za izvođenje programa. Memorija se može dodijeliti na dva načina. To su statička dodjela memorije i dinamička dodjela memorije. Kod statičke dodjele memorije, kada se memorija jednom dodijeli, ne može se promijeniti. Memorija se ne može ponovno koristiti. Ali kod dinamičke dodjele memorije, jednom kad se memorija dodijeli, može se promijeniti. Ključna razlika između statičke i dinamičke dodjele memorije je u tome što je kod statičke dodjele memorije, kada se memorija dodijeli, veličina memorije fiksna, dok kod dinamičke dodjele memorije, kada se memorija dodijeli, veličina memorije se može promijeniti.

Što je dodjela statičke 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 napiše int x, što znači da varijabla može pohraniti cjelobrojnu vrijednost. Broj bajtova ovisi o računalu. Mogu biti i nizovi. npr. int x [5]; Ovaj x je niz koji može pohraniti niz podataka koji su istog tipa. Može pohraniti pet cjelobrojnih elemenata. Ne može pohraniti više od pet elemenata. U Javi se niz 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 dodjele memorije
Razlika između statičke i dinamičke dodjele memorije
Razlika između statičke i dinamičke dodjele memorije
Razlika između statičke i dinamičke dodjele memorije

Slika 01: Metode dodjele memorije

U statičkoj dodjeli memorije, nakon što su varijable dodijeljene, one ostaju trajne. Nakon početne dodjele, programer ne može promijeniti veličinu memorije. Ako je programer dodijelio polje koje može pohraniti 10 elemenata, nije moguće pohraniti vrijednosti veće od navedenog iznosa. Ako je programer prvotno dodijelio niz koji može sadržavati 10 elemenata, ali je trebao samo 5 elemenata, tada dolazi do gubitka memorije. Ta memorija više nije potrebna, ali je također nije moguće ponovno koristiti. Statička dodjela memorije je fiksna, ali implementacija je jednostavna i lagana, a također je brza.

Što je dinamička dodjela memorije?

Ponekad je potrebno promijeniti veličinu memorije. Dakle, memorija se može dodijeliti dinamički. Ovisno o umetanju i brisanju podatkovnih elemenata, memorija se može povećati ili smanjiti. Poznato je kao dinamička dodjela memorije.

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

Glavna prednost dinamičke dodjele memorije je u tome što štedi memoriju. Programator može dodijeliti memoriju ili osloboditi memoriju prema potrebi. Memorija se može preraspodijeliti tijekom izvođenja i može je osloboditi kada nije potrebna. Dinamička dodjela memorije također je učinkovitija od statičke dodjele memorije. Jedan nedostatak je da je implementacija dinamičke dodjele memorije složena.

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

  • Oba su mehanizmi dodjele memorije.
  • Programer bi trebao implementirati oboje ručno.

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

Statična naspram dinamičke dodjele memorije

Statička dodjela memorije metoda je dodjele memorije, a jednom kad se memorija dodijeli, ona je fiksna. Dinamička dodjela memorije je metoda dodjele memorije, a jednom kada se memorija dodijeli, može se promijeniti.
Promjena
U statičkoj dodjeli memorije, nije moguće promijeniti veličinu nakon početne dodjele. Kod dinamičke dodjele memorije, memorija se može prema tome smanjiti ili maksimizirati.
Implementacija
Dodjela statičke memorije je jednostavna za implementaciju. Dinamičku dodjelu memorije je složeno implementirati.
Brzina
U statičkoj memoriji, izvršenje dodjele je brže od dinamičke dodjele memorije. U dinamičkoj memoriji, izvršenje dodjele je sporije od dodjele statičke memorije.
Iskorištenje memorije
U statičkoj dodjeli memorije ne može se ponovno koristiti neiskorištena memorija. Dinamička dodjela memorije omogućuje ponovno korištenje memorije. Programer može dodijeliti više memorije kada je potrebno. On može osloboditi sjećanje kada je potrebno.

Sažetak – dodjela statičke memorije u odnosu na dinamičku

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

Preuzmite PDF statičke naspram dinamičke dodjele memorije

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

Preporučeni: