Skillnad mellan statisk och dynamisk minnetilldelning

Huvudskillnad - Statisk mot dynamisk minnetilldelning
 

Vid programmering är det nödvändigt att lagra beräkningsdata. Dessa data lagras i minnet. Minnesplatserna för lagring av data i datorprogrammering är kända som variabler. Variablerna har en viss datatyp. Därför är minnet allokerat för att köra programmen. Minne kan fördelas på två sätt. De är statisk minnesallokering och dynamisk minnesallokering. Vid statisk minnesallokering kan det inte ändras när minnet är allokerat. Minnet kan inte återanvändas. Men vid dynamisk minnesallokering kan en gång minnet tilldelas det ändras. De nyckelskillnad mellan statisk och dynamisk minnesallokering är det i statisk minnesallokering när minnet har tilldelats, är minnesstorleken fixerad vid dynamisk minnesallokering, när minnet har tilldelats kan minnesstorleken ändras.

INNEHÅLL

1. Översikt och nyckelskillnad
2. Vad är statisk minnetilldelning
3. Vad är dynamisk minnetilldelning
4. Likheter mellan statisk och dynamisk minnetilldelning
5. Jämförelse vid sida vid sida - Statisk mot dynamisk minnetilldelning i tabellform
6. Sammanfattning

Vad är statisk minnetilldelning?

Vid statisk minnesallokering är det tilldelade minnet fixerat. När minnet är allokerat kan det inte ändras. Minnet kan inte ökas eller minskas. Till exempel, i C-språk om programmeraren skriver int x, vilket betyder att variabeln kan lagra ett heltal värde. Antalet byte beror på datorn. Det kan också finnas arrays. T.ex. int x [5]; Denna x är en array som kan lagra en sekvens av data som är av samma typ. Det kan lagra fem heltal element. Det kan inte lagra mer än fem element. I Java kan en array skapas som, int ar [] = new int [5]; Matrisen 'arr' kan lagra 5 heltalvärden och kan inte lagra mer än det.

Figur 01: Minnesallokeringsmetoder

Vid statisk minnesallokering, när de variablerna är allokerade, förbli de permanenta. Efter den första tilldelningen kan programmeraren inte ändra storlek på minnet. Om programmeraren tilldelade en array som kan lagra 10 element, är det inte möjligt att lagra värden mer än det angivna beloppet. Om programmeraren initialt tilldelade en array som kan innehålla 10 element, men bara behövde 5 element, så finns det ett minneförlust. Det minnet behövs inte längre, men det är inte heller möjligt att återanvända minnet. Statisk minnesallokering är fast men genomförandet är enkelt och enkelt, och det är också snabbt.

Vad är dynamisk minnetilldelning?

Ibland är det nödvändigt att ändra minnets storlek. Så minne kan tilldelas dynamiskt. Beroende på infogningar och raderar dataelementen kan minnet växa eller krympa. Det är känt som dynamisk minnesallokering.

I C-språk, stdlib.h header-fil, finns det fyra funktioner för dynamisk minnetilldelning. De är calloc, malloc, realloc och gratis. Funktionen malloc () allokerar en önskad storlek på byte och returnerar en tomrumspekare och pekar den första byten av det tilldelade minnet. Funktionssamtalet () allokerar en önskad storlek på byte och initierar dem till noll. Därefter returneras en tomrumsgivare till minnet. Funktionen free () används för att omfördela det tilldelade minnet. Och reallocfunktionen kan ändra det tidigare tilldelade minnet. Efter att ha allokerat minne med hjälp av calloc eller malloc, är minnesstorleken fixerad, men de kan ökas eller minskas med reallokfunktionen. I Java kan samlingar användas för dynamisk minnetilldelning.

Den största fördelen med dynamisk minnesallokering är att det sparar minne. Programmeraren kan allokera minnet eller släppa minnet efter behov. Minne kan omfördelas under körning och kan frigöra minnet när det inte behövs. Dynamisk minnesallokering är också effektiv än statisk minnesallokering. En nackdel är att implementering av dynamisk minnesallokering är komplex.

Vad är likheterna mellan statisk och dynamisk minnetilldelning?

  • Båda är minnesallokeringsmekanismer.
  • Båda ska genomföras av programmeraren manuellt.

Vad är skillnaden mellan statisk och dynamisk minnetilldelning?

Statisk vs Dynamisk minnetilldelning

Statisk minnesallokering är en metod för allokering av minne, och när minnet är allokerat fixeras det. Dynamisk minnesallokering är en metod för allokering av minne, och när minnet är allokerat kan det ändras.
 Modifiering
Vid statisk minnesallokering är det inte möjligt att ändra storlek efter initial tilldelning. Vid dynamisk minnetilldelning kan minnet minimeras eller maximeras i enlighet därmed.
Genomförande
Statisk minnesallokering är lätt att implementera. Dynamisk minnesallokering är komplicerad att implementera.
 Fart
I statiskt minne är tilldelningsexekvering snabbare än dynamisk minnesallokering. I dynamiskt minne är tilldelningsexekvering långsammare än statisk minnesallokering.
Minnesutnyttjande
Vid statisk minnesallokering kan inte återanvända det oanvända minnet. Dynamisk minnesallokering möjliggör återanvändning av minnet. Programmeraren kan tilldela mer minne när det behövs. Han kan frigöra minnet vid behov.

Sammanfattning - Statisk vs Dynamisk minnetilldelning

Vid programmering är statisk minnesallokering och dynamisk minnesallokering två mekanismer för allokering av minne. Skillnaden mellan statisk och dynamisk minnesallokering är att minnesstorleken i statisk minnesallokering när minnet är allokerat är fast vid dynamisk minnesallokering, när minnet har tilldelats kan minnesstorleken ändras. Programmeraren kan bestämma om minnet ska vara statiskt eller dynamiskt beroende på applikationen.

Ladda ner PDF-filen från Static vs Dynamic Memory Allocation

Du kan hämta PDF-versionen av den här artikeln och använda den för offlineändamål enligt citationsnotat. Vänligen ladda ner PDF-versionen här: Skillnad mellan statisk och dynamisk minnetilldelning

Referens:

1.Kayal, Somnath. "SOMNATH KAYAL." Skillnad mellan statisk minnetilldelning och dynamisk minnetilldelning, 1 jan 1970. Tillgänglig här 
2.tutorialspoint.com. "Arrays in C." Punkten. Tillgänglig här 
3.nareshtechnologies. Statiskt minne vs dynamiskt minne | C Language Tutorial, Naresh I Technologies, 19 september 2016. Tillgänglig här