Forskel mellem statisk og dynamisk hukommelsesfordeling

Nøgleforskel - Statisk kontra dynamisk hukommelsesfordeling
 

Ved programmering er det nødvendigt at gemme beregningsdata. Disse data gemmes i hukommelsen. Hukommelsesstederne til lagring af data i computerprogrammering kaldes variabler. Variablerne har en bestemt datatype. Derfor er hukommelsen allokeret til at køre programmerne. Hukommelse kan tildeles på to måder. Det drejer sig om statisk hukommelsesallokering og dynamisk hukommelsesallokering. Når statisk hukommelsesallokering er tildelt, når hukommelsen er tildelt, kan den ikke ændres. Hukommelsen kan ikke genanvendes. Men ved dynamisk hukommelsesallokering, når hukommelsen er tildelt, kan den ændres. Det vigtigste forskel mellem statisk og dynamisk hukommelsesallokering er det i statisk hukommelsesallokering, når hukommelsen er tildelt, er hukommelsesstørrelsen fast, mens den i dynamisk hukommelsesallokering, når hukommelsen er tildelt, kan hukommelsesstørrelsen ændres.

INDHOLD

1. Oversigt og nøgleforskel
2. Hvad er statisk hukommelsesfordeling
3. Hvad er dynamisk hukommelsesfordeling
4. Ligheder mellem statisk og dynamisk hukommelsesfordeling
5. Sammenligning side ved side - Statisk kontra dynamisk hukommelsestildeling i tabelform
6. Resume

Hvad er statisk hukommelsesfordeling?

Ved statisk hukommelsesallokering er den tildelte hukommelse fast. Når hukommelsen er tildelt, kan den ikke ændres. Hukommelsen kan ikke øges eller formindskes. For eksempel på C-sprog, hvis programmereren skriver int x, hvilket betyder, at variablen kan gemme en heltalværdi. Antallet af byte afhænger af computeren. Der kan også være arrays. F.eks. int x [5]; Denne x er en matrix, der kan gemme en sekvens af data, der er af samme type. Det kan gemme fem heltalelementer. Det kan ikke gemme mere end fem elementer. I Java kan der oprettes en matrix som, int arr [] = new int [5]; Arrayet 'arr' kan gemme 5 heltalværdier og kan ikke gemme mere end det.

Figur 01: Metoder til hukommelsesfordeling

Ved statisk hukommelsesallokering forbliver de, når først variablerne er tildelt, permanente. Efter den første tildeling kan programmereren ikke ændre størrelsen på hukommelsen. Hvis programmereren tildelte en matrix, der kan gemme 10 elementer, er det ikke muligt at gemme værdier mere end det specificerede beløb. Hvis programmereren oprindeligt tildelte en matrix, der kan indeholde 10 elementer, men kun havde brug for 5 elementer, er der et hukommelsesspild. Denne hukommelse er ikke længere nødvendigt, men det er heller ikke muligt at genbruge hukommelsen. Statisk hukommelsesallokering er fast, men implementeringen er enkel og let, og den er også hurtig.

Hvad er dynamisk hukommelsesfordeling?

Nogle gange er det nødvendigt at ændre hukommelsens størrelse. Så hukommelse kan fordeles dynamisk. Afhængigt af indsættelser og sletninger af dataelementerne, kan hukommelsen vokse eller krympe. Det er kendt som dynamisk hukommelsesallokering.

På C-sprog, stdlib.h header-fil, er der fire funktioner til dynamisk hukommelsesallokering. De er calloc, malloc, realloc og gratis. Funktionen malloc () tildeler en påkrævet størrelse på bytes og returnerer en ugyldig markør, der peger på den første byte i den tildelte hukommelse. Funktionen calloc () tildeler en påkrævet størrelse på bytes og initialiserer dem til nul. Derefter vender en ugyldig markør tilbage til hukommelsen. Den frie () -funktion bruges til at omfordele den tildelte hukommelse. Og realloc-funktionen kan ændre den tidligere tildelte hukommelse. Efter tildeling af hukommelse vha. Calloc eller malloc er hukommelsesstørrelsen fast, men de kan øges eller formindskes ved hjælp af realloc-funktionen. I Java kan samlinger bruges til dynamisk hukommelsesallokering.

Den største fordel ved dynamisk hukommelsesallokering er, at den sparer hukommelse. Programmereren kan allokere hukommelse eller frigive hukommelsen efter behov. Hukommelse kan omfordeles under udførelse 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 ligheden mellem statisk og dynamisk hukommelsesfordeling?

  • Begge er hukommelsestildelingsmekanismer.
  • Begge skal implementeres af programmereren manuelt.

Hvad er forskellen mellem statisk og dynamisk hukommelsesfordeling?

Statisk vs dynamisk hukommelsesfordeling

Statisk hukommelsesallokering er en metode til allokering af hukommelse, og når hukommelsen er tildelt, er den rettet. Dynamisk hukommelsesallokering er en metode til tildeling af hukommelse, og når hukommelsen er tildelt, kan den ændres.
 Modifikation
Ved statisk hukommelsesallokering er det ikke muligt at ændre størrelsen efter den første allokering. Ved dynamisk hukommelsesallokering kan hukommelsen minimeres eller maksimeres i overensstemmelse hermed.
Implementering
Statisk hukommelsesallokering er let at implementere. Dynamisk hukommelsesallokering er kompleks at implementere.
 Hastighed
I statisk hukommelse er eksekvering af allokering hurtigere end dynamisk hukommelsesallokering. I dynamisk hukommelse er eksekvering af allokering langsommere end statisk hukommelsesallokering.
Hukommelsesudnyttelse
Ved statisk hukommelsesallokering kan ikke den ubrugte hukommelse genbruges. Dynamisk hukommelsesallokering gør det muligt at genbruge hukommelsen. Programmereren kan tildele mere hukommelse, når det er nødvendigt. Han kan frigive hukommelsen, når det er nødvendigt.

Resumé - Statisk vs dynamisk hukommelsesfordeling

Ved programmering er statisk hukommelsesallokering og dynamisk hukommelsesallokering to mekanismer til tildeling af hukommelse. Forskellen mellem statisk og dynamisk hukommelsesallokering er, at når statisk hukommelsesallokering, når hukommelsen er allokeret, er hukommelsesstørrelsen fast, mens hukommelsesstørrelsen i dynamisk hukommelsesallokering kan ændres, når hukommelsen er allokeret. Programmereren kan beslutte, om hukommelsen skal være statisk eller dynamisk, afhængigt af applikationen.

Download PDF af Static vs Dynamic Memory Allocation

Du kan downloade PDF-version af denne artikel og bruge den til offline-formål som pr. Citatnotat. Download PDF-versionen her: Forskel mellem statisk og dynamisk hukommelsesfordeling

Reference:

1.Kayal, Somnath. “SOMNATH KAYAL.” Forskel mellem statisk hukommelsesallokering og dynamisk hukommelsesfordeling, 1. januar 1970. Tilgængelig her 
2.tutorialspoint.com. “Arrays i C.” Pointen. Tilgængelig her 
3.nareshtechnologies. Statisk hukommelse vs dynamisk hukommelse | C Sprogvejledning, Naresh i Technologies, 19. september 2016. Findes her