În programare, este necesar să se stocheze date computaționale. Aceste date sunt stocate în memorie. Locațiile de memorie pentru stocarea datelor în programarea calculatorului sunt cunoscute ca variabile. Variabilele au un tip specific de date. Prin urmare, memoria este alocată pentru a rula programele. Memoria poate fi alocată în două moduri. Sunt alocări statice de memorie și alocare dinamică a memoriei. În alocarea de memorie statică, odată ce memoria este alocată, nu se poate schimba. Memoria nu este reutilizabilă. Dar, în alocarea dinamică a memoriei, odată ce memoria este alocată, aceasta poate fi schimbată. diferența cheie între alocarea de memorie statică și dinamică este aceea în alocarea memoriei statice odată ce memoria este alocată, dimensiunea memoriei este fixă în timpul alocării dinamice a memoriei, odată ce memoria este alocată, dimensiunea memoriei poate fi modificată.
1. Prezentare generală și diferență cheie
2. Ce este alocarea de memorie statică
3. Ce este Alocarea dinamică a memoriei
4. Asemănări între alocarea statică și dinamică a memoriei
5. Comparație comparativă - Alocarea statică vs. dinamică a memoriei în formă tabelară
6. rezumat
În alocarea memoriei statice, memoria alocată este fixată. Odată ce memoria este alocată, ea nu poate fi modificată. Memoria nu poate fi mărită sau scăzută. De exemplu, în limbajul C dacă programatorul scrie int x, ceea ce înseamnă că variabila poate stoca o valoare întregă. Numărul de octeți depinde de computer. Pot exista și mese. De exemplu. int x [5]; Acest x este o matrice care poate stoca o secvență de date care sunt de același tip. Poate stoca cinci elemente întregi. Nu poate stoca mai mult de cinci elemente. În Java, o matrice poate fi creată ca int int [] = new int [5]; Arra "arr" poate stoca 5 valori întregi și nu poate stoca mai mult decât atât.
Figura 01: Metode de alocare a memoriei
În alocarea de memorie statică, odată ce variabilele sunt alocate, acestea rămân permanente. După alocarea inițială, programatorul nu poate redimensiona memoria. Dacă programatorul a alocat o matrice care poate stoca 10 elemente, nu este posibilă stocarea unor valori mai mari decât suma specificată. Dacă programatorul a alocat inițial o matrice care poate conține 10 elemente, dar are nevoie doar de 5 elemente, atunci există o pierdere de memorie. Această memorie nu mai este necesară, dar nu este posibilă reutilizarea memoriei. Alocarea statică a memoriei este fixă, însă implementarea este simplă și ușoară și este, de asemenea, rapidă.
Uneori este necesar să modificați mărimea memoriei. Deci, memoria poate fi alocată dinamic. În funcție de inserțiile și ștergerile elementelor de date, memoria poate crește sau se poate micșora. Este cunoscută sub numele de alocare dinamică a memoriei.
În limbajul C, fișierul antet stdlib.h, există patru funcții pentru alocarea dinamică a memoriei. Ele sunt calloc, malloc, realoc și liber. Funcția malloc () alocă o dimensiune necesară de octeți și returnează un pointer vid, indicând primul octet al memoriei alocate. Funcția calloc () alocă o dimensiune necesară de octeți și le inițializează la zero. Apoi returnează un memoriu gol în memorie. Funcția free () este utilizată pentru a realoca memoria alocată. Funcția realloc poate modifica memoria alocată anterior. După alocarea memoriei utilizând calloc sau malloc, dimensiunea memoriei este fixă, dar poate fi mărită sau redusă utilizând funcția realloc. În Java, colecțiile pot fi utilizate pentru alocarea dinamică a memoriei.
Principalul avantaj al alocării dinamice a memoriei este că economisește memoria. Programatorul poate aloca memorie sau elibera memoria după cum este necesar. Memoria poate fi realocată în timpul execuției și poate elibera memoria atunci când nu este necesară. Alocarea dinamică a memoriei este, de asemenea, eficientă decât alocarea memoriei statice. Un dezavantaj este că implementarea alocării dinamice a memoriei este complexă.
Alocarea statică vs dinamică a memoriei | |
Alocarea memoriei statice este o metodă de alocare a memoriei și, odată ce memoria este alocată, aceasta este fixată. | Alocarea dinamică a memoriei este o metodă de alocare a memoriei, iar odată ce memoria este alocată, aceasta poate fi schimbată. |
Modificare | |
În alocarea de memorie statică, nu este posibilă redimensionarea după alocarea inițială. | În alocarea dinamică a memoriei, memoria poate fi minimizată sau maximizată în consecință. |
Punerea în aplicare | |
Alocarea statică a memoriei este ușor de implementat. | Alocarea dinamică a memoriei este complexă pentru implementare. |
Viteză | |
În memoria statică, execuția alocării este mai rapidă decât alocarea dinamică a memoriei. | În memoria dinamică, execuția alocării este mai lentă decât alocarea memoriei statice. |
Utilizarea memoriei | |
În alocarea statică a memoriei, nu se poate reutiliza memoria neutilizată. | Alocarea dinamică a memoriei permite reutilizarea memoriei. Programatorul poate aloca mai multă memorie atunci când este necesar. El poate elibera memoria când este necesar. |
În programare, alocarea memoriei statice și alocarea dinamică a memoriei sunt două mecanisme pentru alocarea memoriei. Diferența dintre alocarea statică și cea dinamică a memoriei este aceea că, în alocarea de memorie statică odată ce memoria este alocată, dimensiunea memoriei este fixă în timpul alocării memoriei dinamice, odată ce memoria este alocată, dimensiunea memoriei poate fi schimbată. Programatorul poate decide dacă memoria trebuie să fie statică sau dinamică în funcție de aplicație.
Puteți descărca versiunea PDF a acestui articol și o puteți utiliza în scopuri offline conform notei de citare. Descărcați versiunea PDF aici: Diferența dintre alocarea statică și dinamică a memoriei
1.Kayal, Somnath. "SOMNATH KAYAL." Diferența dintre alocarea static a memoriei și alocarea dinamică a memoriei, 1 ianuarie 1970. Disponibil aici
2.tutorialspoint.com. "Arrays in C." Punctul. Disponibil aici
3.nareshtechnologies. Memorie statică vs. memorie dinamică C Tutoriale limbaj, Naresh i Technologies, 19 septembrie 2016. Disponibil aici