Nøgleforskel – statisk vs dynamisk hukommelsestildeling
I programmering er det nødvendigt at gemme beregningsdata. Disse data gemmes i hukommelsen. Hukommelsesplaceringerne til lagring af data i computerprogrammering er kendt som variabler. Variablerne har en bestemt datatype. Derfor er hukommelsen allokeret til at køre programmerne. Hukommelse kan allokeres på to måder. De er statisk hukommelsesallokering og dynamisk hukommelsesallokering. Ved statisk hukommelsesallokering kan den ikke ændres, når først hukommelsen er allokeret. Hukommelsen kan ikke genbruges. Men i dynamisk hukommelsesallokering, når hukommelsen er allokeret, kan den ændres. Den vigtigste forskel mellem statisk og dynamisk hukommelsesallokering er, at i statisk hukommelsesallokering, når hukommelsen er allokeret, er hukommelsesstørrelsen fast, mens i dynamisk hukommelsesallokering, når hukommelsen er allokeret, kan hukommelsesstørrelsen ændres.
Hvad er statisk hukommelsesallokering?
I statisk hukommelsesallokering er den allokerede hukommelse fast. Når hukommelsen er allokeret, kan den ikke ændres. Hukommelsen kan ikke øges eller formindskes. For eksempel i C-sprog, hvis programmøren skriver int x, hvilket betyder, at variablen kan gemme en heltalsværdi. Antallet af bytes afhænger af computeren. Der kan også være arrays. For eksempel. int x [5]; Dette x er et array, som kan lagre en sekvens af data, som er af samme type. Det kan gemme fem heltalselementer. Den kan ikke opbevare mere end fem elementer. I Java kan et array oprettes som, int arr=new int[5]; Arrayet 'arr' kan gemme 5 heltalsværdier og kan ikke gemme mere end det.
Figur 01: Hukommelsestildelingsmetoder
I statisk hukommelsesallokering, når variablerne er allokeret, forbliver de permanente. Efter den indledende tildeling kan programmøren ikke ændre størrelsen på hukommelsen. Hvis programmøren tildelte et array, der kan gemme 10 elementer, er det ikke muligt at gemme værdier mere end den specificerede mængde. Hvis programmøren oprindeligt tildelte et array, der kan rumme 10 elementer, men kun havde brug for 5 elementer, så er der spild af hukommelse. Den hukommelse er der ikke længere brug for, men det er heller ikke muligt at genbruge hukommelsen. Statisk hukommelsesallokering er fast, men implementeringen er enkel og nem, og den er også hurtig.
Hvad er Dynamic Memory Allocation?
Nogle gange er det nødvendigt at ændre størrelsen på hukommelsen. Så hukommelse kan allokeres dynamisk. Afhængigt af indsættelser og sletninger af dataelementerne kan hukommelsen vokse eller krympe. Det er kendt som dynamisk hukommelsesallokering.
I C-sprog, stdlib.h header-fil, er der fire funktioner til dynamisk hukommelsesallokering. De er calloc, malloc, realloc og gratis. Funktionen malloc() allokerer en påkrævet størrelse af bytes og returnerer en void pointer, der peger på den første byte i den allokerede hukommelse. Funktionen calloc() tildeler en påkrævet størrelse af bytes og initialiserer dem til nul. Returnerer derefter en tommarkør til hukommelsen. Funktionen free() bruges til at omallokere den allokerede hukommelse. Og realloc-funktionen kan ændre den tidligere tildelte hukommelse. Efter tildeling af hukommelse ved hjælp af calloc eller malloc er hukommelsesstørrelsen fast, men de kan øges eller reduceres ved hjælp af realloc-funktionen. I Java kan samlinger bruges til dynamisk hukommelsesallokering.
Den største fordel ved dynamisk hukommelsesallokering er, at det sparer hukommelse. Programmeringsenheden kan tildele hukommelse eller frigive hukommelsen efter behov. Hukommelse kan omallokeres under udførelsen og kan frigøre hukommelsen, når den ikke er påkrævet. Dynamisk hukommelsesallokering er også effektiv end statisk hukommelsesallokering. En ulempe er, at implementering af dynamisk hukommelsesallokering er kompleks.
Hvad er lighederne mellem statisk og dynamisk hukommelsesallokering?
- Begge er hukommelsestildelingsmekanismer.
- Begge skal implementeres af programmøren manuelt.
Hvad er forskellen mellem statisk og dynamisk hukommelsesallokering?
Static vs Dynamic Memory Allocation |
|
Statisk hukommelsesallokering er en metode til at allokere hukommelse, og når hukommelsen er allokeret, er den fikset. | Dynamisk hukommelsesallokering er en metode til at allokere hukommelse, og når hukommelsen er allokeret, kan den ændres. |
Ændring | |
I statisk hukommelsesallokering er det ikke muligt at ændre størrelse efter indledende allokering. | I dynamisk hukommelsesallokering kan hukommelsen minimeres eller maksimeres i overensstemmelse hermed. |
Implementering | |
Statisk hukommelsesallokering er nem at implementere. | Dynamisk hukommelsesallokering er kompleks at implementere. |
Hastighed | |
I statisk hukommelse er allokeringsudførelsen hurtigere end dynamisk hukommelsesallokering. | I dynamisk hukommelse er allokeringsudførelsen langsommere end statisk hukommelsesallokering. |
Hukommelsesudnyttelse | |
I statisk hukommelsesallokering, kan ikke genbruge den ubrugte hukommelse. | Dynamisk hukommelsesallokering gør det muligt at genbruge hukommelsen. Programmeringsenheden kan tildele mere hukommelse efter behov. Han kan frigive hukommelsen, når det er nødvendigt. |
Oversigt – statisk vs dynamisk hukommelsesallokering
I programmering er statisk hukommelsesallokering og dynamisk hukommelsesallokering to mekanismer til allokering af hukommelse. Forskellen mellem statisk og dynamisk hukommelsesallokering er, at i statisk hukommelsesallokering, når hukommelsen er allokeret, er hukommelsesstørrelsen fast, mens i dynamisk hukommelsesallokering, når hukommelsen er allokeret, kan hukommelsesstørrelsen ændres. Programmøren kan bestemme, om hukommelsen skal være statisk eller dynamisk afhængig af applikationen.
Download PDF'en af Static vs Dynamic Memory Allocation
Du kan downloade PDF-versionen af denne artikel og bruge den til offline-formål i henhold til citatnotat. Download venligst PDF-versionen her: Difference Between Static and Dynamic Memory Allocation