Nøkkelforskjell – statisk vs dynamisk minneallokering
I programmering er det nødvendig å lagre beregningsdata. Disse dataene er lagret i minnet. Minneplasseringene for lagring av data i dataprogrammering er kjent som variabler. Variablene har en bestemt datatype. Derfor er minnet tildelt for å kjøre programmene. Minne kan tildeles på to måter. De er Statisk minneallokering og Dynamisk minneallokering. I statisk minneallokering, når minnet er tildelt, kan det ikke endres. Minnet er ikke gjenbrukbart. Men i dynamisk minneallokering, når minnet er allokert, kan det endres. Den viktigste forskjellen mellom statisk og dynamisk minneallokering er at i statisk minneallokering når minnet er allokert, er minnestørrelsen fast mens i dynamisk minneallokering, når minnet er allokert, kan minnestørrelsen endres.
Hva er statisk minnetildeling?
I statisk minneallokering er det tildelte minnet fast. Når minnet er allokert, kan det ikke endres. Minnet kan ikke økes eller reduseres. For eksempel i C-språk hvis programmereren skriver int x, noe som betyr at variabelen kan lagre en heltallsverdi. Antall byte avhenger av datamaskinen. Det kan også være arrays. f.eks. int x [5]; Denne x er en matrise som kan lagre en sekvens av data som er av samme type. Den kan lagre fem heltallselementer. Den kan ikke lagre mer enn fem elementer. I Java kan en matrise opprettes som, int arr=new int[5]; Matrisen 'arr' kan lagre 5 heltallsverdier og kan ikke lagre mer enn det.
Figur 01: Minnetildelingsmetoder
I statisk minneallokering, når variablene er allokert, forblir de permanente. Etter den første tildelingen kan ikke programmereren endre størrelsen på minnet. Hvis programmereren tildelte en matrise som kan lagre 10 elementer, er det ikke mulig å lagre verdier mer enn den angitte mengden. Hvis programmereren i utgangspunktet tildelte en matrise som kan inneholde 10 elementer, men bare trengte 5 elementer, så er det sløsing med minne. Det minnet er ikke lenger nødvendig, men det er heller ikke mulig å gjenbruke minnet. Statisk minneallokering er fast, men implementeringen er enkel og enkel, og den er også rask.
Hva er dynamisk minnetildeling?
Noen ganger er det nødvendig å endre størrelsen på minnet. Så minne kan tildeles dynamisk. Avhengig av innsetting og sletting av dataelementene, kan minnet vokse eller krympe. Det er kjent som dynamisk minnetildeling.
I C-språket, stdlib.h header-fil, er det fire funksjoner for dynamisk minneallokering. De er calloc, malloc, realloc og gratis. Funksjonen malloc() tildeler en nødvendig størrelse på byte og returnerer en void-peker som peker på den første byten i det tildelte minnet. Funksjonen calloc() tildeler en nødvendig størrelse på byte og initialiserer dem til null. Returnerer deretter en void-peker til minnet. Free()-funksjonen brukes til å omallokere det tildelte minnet. Og realloc-funksjonen kan endre det tidligere tildelte minnet. Etter tildeling av minne ved hjelp av calloc eller malloc, er minnestørrelsen fast, men de kan økes eller reduseres ved hjelp av realloc-funksjonen. I Java kan samlinger brukes til dynamisk minneallokering.
Den største fordelen med dynamisk minneallokering er at det sparer minne. Programmereren kan tildele minne eller frigjøre minnet etter behov. Minne kan omfordeles under utførelse og kan frigjøre minnet når det ikke er nødvendig. Dynamisk minneallokering er også effektiv enn statisk minneallokering. En ulempe er at implementering av dynamisk minneallokering er komplisert.
Hva er likhetene mellom statisk og dynamisk minneallokering?
- Begge er minnetildelingsmekanismer.
- Begge skal implementeres av programmereren manuelt.
Hva er forskjellen mellom statisk og dynamisk minneallokering?
Statisk vs dynamisk minnetildeling |
|
Statisk minneallokering er en metode for å tildele minne, og når minnet er allokert, er det fikset. | Dynamisk minnetildeling er en metode for å tildele minne, og når minnet er allokert, kan det endres. |
Modifikasjon | |
I statisk minneallokering er det ikke mulig å endre størrelse etter første tildeling. | I dynamisk minnetildeling kan minnet minimeres eller maksimeres tilsvarende. |
Implementering | |
Statisk minnetildeling er enkel å implementere. | Dynamisk minnetildeling er komplisert å implementere. |
Speed | |
I statisk minne er allokeringsutførelse raskere enn dynamisk minneallokering. | I dynamisk minne er allokeringsutførelsen tregere enn statisk minneallokering. |
Minneutnyttelse | |
I statisk minneallokering, kan ikke gjenbruke det ubrukte minnet. | Dynamisk minnetildeling gjør det mulig å gjenbruke minnet. Programmereren kan tildele mer minne ved behov. Han kan frigjøre minnet når det er nødvendig. |
Summary – Static vs Dynamic Memory Allocation
I programmering er statisk minneallokering og dynamisk minneallokering to mekanismer for tildeling av minne. Forskjellen mellom statisk og dynamisk minneallokering er at i statisk minneallokering når minnet er allokert, er minnestørrelsen fast mens i dynamisk minneallokering, når minnet er allokert, kan minnestørrelsen endres. Programmereren kan bestemme om minnet skal være statisk eller dynamisk avhengig av applikasjonen.
Last ned PDF-en av Static vs Dynamic Memory Allocation
Du kan laste ned PDF-versjonen av denne artikkelen og bruke den til offline-formål i henhold til sitat. Last ned PDF-versjonen her: Difference Between Static and Dynamic Memory Allocation