nyckelskillnad – statisk vs dynamisk minnesallokering
I programmering är det nödvändigt att lagra beräkningsdata. Dessa data lagras i minnet. Minnesplatserna för att lagra data i datorprogrammering är kända som variabler. Variablerna har en specifik datatyp. Därför är minnet tilldelat för att köra programmen. Minne kan allokeras på två sätt. De är statisk minnesallokering och dynamisk minnesallokering. Vid statisk minnesallokering, när minnet väl har allokerats, kan det inte ändras. Minnet är inte återanvändbart. Men i dynamisk minnesallokering, när minnet väl har allokerats kan det ändras. Den viktigaste skillnaden mellan statisk och dynamisk minnesallokering är att vid statisk minnesallokering när minnet har allokerats är minnesstorleken fast medan vid dynamisk minnesallokering, när minnet är allokerat, kan minnesstorleken ändras.
Vad är statisk minnesallokering?
I statisk minnesallokering är det tilldelade minnet fast. 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 heltalsvärde. Antalet byte beror på datorn. Det kan också finnas arrayer. T.ex. int x [5]; Detta x är en array som kan lagra en sekvens av data som är av samma typ. Den kan lagra fem heltalselement. Den kan inte lagra mer än fem element. I Java kan en array skapas som, int arr=new int[5]; Arrayen 'arr' kan lagra 5 heltalsvärden och kan inte lagra fler än så.
Figur 01: Minnestilldelningsmetoder
I statisk minnesallokering, när variablerna väl har allokerats, förblir de permanenta. Efter den initiala 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 antalet. Om programmeraren initi alt allokerade en array som kan hålla 10 element, men bara behövde 5 element, så finns det ett minnesslöseri. Det minnet behövs inte längre, men det går inte heller att återanvända minnet. Statisk minnesallokering är fast men implementeringen är enkel och lätt, och den är också snabb.
Vad är dynamisk minnesallokering?
Ibland är det nödvändigt att ändra storleken på minnet. Så minne kan allokeras dynamiskt. Beroende på infogning och borttagning av dataelementen kan minnet växa eller krympa. Det är känt som dynamisk minnesallokering.
I C-språket, stdlib.h header-fil, finns det fyra funktioner för dynamisk minnesallokering. De är calloc, malloc, realloc och gratis. Funktionen malloc() allokerar en nödvändig storlek på byte och returnerar en void-pekare som pekar på den första byten i det allokerade minnet. Funktionen calloc() allokerar en nödvändig storlek på byte och initierar dem till noll. Returnerar sedan en tomrumspekare till minnet. Funktionen free() används för att omallokera det tilldelade minnet. Och realloc-funktionen kan modifiera det tidigare tilldelade minnet. Efter tilldelning av minne med calloc eller malloc är minnesstorleken fast, men de kan ökas eller minskas med hjälp av realloc-funktionen. I Java kan samlingar användas för dynamisk minnesallokering.
Den största fördelen med dynamisk minnesallokering är att det sparar minne. Programmeraren kan allokera minne eller frigöra 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 det är komplicerat att implementera dynamisk minnesallokering.
Vilka är likheterna mellan statisk och dynamisk minnesallokering?
- Båda är minnesallokeringsmekanismer.
- Båda bör implementeras av programmeraren manuellt.
Vad är skillnaden mellan statisk och dynamisk minnesallokering?
Statisk vs dynamisk minnesallokering |
|
Statisk minnesallokering är en metod för att allokera minne, och när minnet är allokerat är det fixat. | Dynamisk minnesallokering är en metod för att allokera minne, och när minnet är allokerat kan det ändras. |
Ändring | |
I statisk minnesallokering är det inte möjligt att ändra storlek efter initial allokering. | Vid dynamisk minnesallokering kan minnet minimeras eller maximeras i enlighet med detta. |
Implementation | |
Statisk minnesallokering är lätt att implementera. | Dynamisk minnesallokering är komplicerad att implementera. |
Hastighet | |
I statiskt minne är allokeringsexekveringen snabbare än dynamisk minnesallokering. | I dynamiskt minne är allokeringsexekveringen långsammare än statisk minnesallokering. |
Minnesanvändning | |
I statisk minnesallokering, kan inte återanvända det oanvända minnet. | Dynamisk minnesallokering tillåter återanvändning av minnet. Programmeraren kan tilldela mer minne vid behov. Han kan frigöra minnet när det behövs. |
Sammanfattning – Statisk vs dynamisk minnesallokering
I programmering är statisk minnesallokering och dynamisk minnesallokering två mekanismer för att allokera minne. Skillnaden mellan statisk och dynamisk minnesallokering är att vid statisk minnesallokering när minnet är allokerat, är minnesstorleken fast medan vid dynamisk minnesallokering, när minnet är allokerat, kan minnesstorleken ändras. Programmeraren kan bestämma om minnet ska vara statiskt eller dynamiskt beroende på applikation.
Ladda ned PDF-filen för Static vs Dynamic Memory Allocation
Du kan ladda ner PDF-versionen av den här artikeln och använda den för offlineändamål enligt citat. Ladda ner PDF-versionen här: Difference Between Static and Dynamic Memory Allocation