single
Dynamisk Allokering
Svep för att visa menyn
Dynamisk minnesallokering innebär att använda operatorerna new och delete. Dessa operatorer gör det möjligt att allokera minne för variabler och arrayer under körning, vilket ger större flexibilitet än statisk minnesallokering.
-
new: operator som används för att dynamiskt allokera minne för ett objekt eller en array av objekt under körning; -
delete: operator som används för att frigöra minne som tidigare har allokerats med operatornnew.
En pekare som pekar på dynamiskt allokerat minne lagras vanligtvis på stacken, men minnet som den pekar på är allokerat på heapen.
För att skapa en heltalsvariabel dynamiskt måste du använda en pekare tillsammans med nyckelordet new.
int *dynamicInteger = new int;
För att frigöra det dynamiskt allokerade minnet används operatorn delete:
delete dynamicInteger;
Gör det till en regel: när du använder new för att allokera minne, använd alltid delete för att frigöra det senare.
Dynamiskt allokerade arrayer
Vid dynamisk minnesallokering för arrayer används operatorn new[], och vid frigöring av minne för dynamiskt allokerade arrayer används operatorn delete[].
Underlåtenhet att ta bort dynamiskt allokerat minne kan leda till minnesläckor, där programmet behåller minne som inte längre används.
Svep för att börja koda
Föreställ dig att du arbetar som lärare och behöver beräkna medelbetyget för en grupp elever.
Du kommer även att arbeta med pekare och funktioner som hanterar dynamiskt allokerade arrayer.
- Skapa en dynamiskt allokerad array
gradesför att lagra elevernas betyg. - Använd funktionen
fillRandomGradesför att fylla arrayen med slumpmässiga betyg mellan 60 och 100. - Komplettera funktionen
calculateAverageså att den:- Initierar variabeln
sumtill 0. - Itererar genom arrayen med en
for-loop. - Lägger till varje betyg till
sum. - Returnerar medelbetyget genom att dividera den totala
summed antalet elever.
- Initierar variabeln
- Kom ihåg att frigöra det allokerade minnet med
delete[]i slutet av programmet för att undvika minnesläckor.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal