I grundläggande C + + programmering , variabler och arrayer deklareras av programmeraren direkt i koden . Men när man bygger datastrukturer som dynamiskt storleksändring matriser , måste programmeraren lära sig att dynamiskt allokera minne under exekvering av kod . Arrays tilldelats på detta sätt har några fördelar , såsom icke - konstant längd vid deklarationen . Programmeraren kan fördela arrayer av skalära datatyper och användarskapade klasser identiskt . Använda pekare och nyckelord inbyggda i standarden biblioteket , C + + gör minnesallokering och radering okomplicerad . Saker du behöver
Text Redaktör C /C + + kompilator ( t.ex. Microsoft Visual Studio eller GCC )
Visa fler instruktioner
1
Skapa en pekare av datatypvärdet arrayen kommer att innehålla . Till exempel , dynamiskt skapa en array av heltal , måste ett heltal pekare finns att referera arrayen :
int * arr_ptr ,
pekare " arr_ptr " kommer nu låta en programmerare att referera djup minne under körning .
2
Använd pekaren för att allokera minne . Den " nya " nyckelordet , som är specifik för C + + -bibliotek ( och inte tillgängliga i standard C ) hävdar minnet under exekvering för användning av kallelse pekaren :
arr_ptr = new int [ 6 ] ;
Här griper den " nya " nyckelordet ett block av sex heltal stora delar av minnet . Men till skillnad arrayer deklareras innan körning , kan dynamiska matriser deklareras med variabel input :
int i = 6 ;
arr_ptr = new int [ i] ;
tillåter programmeraren att skapa arrayer som kan ändra storlek baseras på behov snarare än förutbestämt utrymme beteckning .
3
Tilldela en uppsättning användarskapade datatyper . Efter C + + minnesallokering förfarande , programmeraren kan skapa arrayer av datatyper deklareras i separata klasser :
int i = 5;
newClass * class_ptr ,
class_ptr = ny newClass [ i] ; .
pekare " class_ptr " kommer att referera till en variabel av " newClass " datatyp , troligen definierad i en klass beskrivning i en annan fil
4
Radera array. När en grupp inte längre behövs ( eller har kopierats till en annan array , eventuellt under en storleksändring ) programmeraren bör se till att ta bort det . Allokerat minne som inte raderas , men inte längre refereras , kan ta upp värdefull minne och , med tiden , orsakar vad som kallas en minnesläcka
int i = 5; .
NewClass * class_ptr ;
class_ptr = ny newClass [ i] ;
delete class_ptr [ ] ;
nu kommer arrayen refereras av " class_ptr " utgå , och minnet frigörs för andra ändamål .