new delete operators c with examples
Udforsk alt om nye / Slet operatører i C ++.
Vi har allerede set variabler og statiske arrays i C ++ i vores tidligere tutorials.
For så vidt angår hukommelsen, der er allokeret til variablerne og arrays, er det den statiske hukommelse, der tildeles af compileren afhængigt af datatypen (i tilfælde af variabler) og dimensioner, der er angivet for arrays.
Den hukommelse, der er tildelt af compileren, tildeles på stakken. Men i de fleste tilfælde er vi måske ikke opmærksomme på den nøjagtige mængde hukommelse, vi har brug for.
=> Læs gennem den populære C ++ træningsserie her.
Hvad vi ville gøre er at allokere og de-allokere så meget hukommelse, som vi vil, og også når og når vi vil have det. Dette gøres ved dynamisk at tildele hukommelsen. I modsætning til statisk tildeling tildeles dynamisk allokeret hukommelse på bunken.
Dynamisk hukommelsestildeling er nyttig, da vi kan allokere hukommelse med variabel størrelse, som vi ikke kan opnå med den tildelte hukommelse til compileren. Vi har fleksibiliteten til at allokere hukommelse, når vi har brug for og allokere den, når vi ikke har brug for den.
Men bortset fra disse anvendelser skal vi også huske, at i tilfælde af dynamisk allokeret hukommelse er det brugerens ansvar at deallokere hukommelsen. Hvis vi glemmer at allokere hukommelsen, forårsager det en hukommelseslækage, hvor hukommelsen ikke omlokaliseres, før programmet afsluttes.
Dette kan resultere i, at der bruges for meget hukommelse og dermed forårsager alvorlige flaskehalse.
Hvad du lærer:
- Dynamisk hukommelsesallokering
- Den 'nye' operatør
- Brug af den 'nye' operatør med arrays
- Slet operatør
- Konklusion
- Anbefalet læsning
Dynamisk hukommelsesallokering
C-sprog bruger 'malloc', 'calloc' og 'realloc' funktioner til at allokere hukommelse dynamisk. For at affordele den hukommelse, der er tildelt dynamisk med disse funktioner, bruger den 'gratis' funktionsopkald. C ++ sprog understøtter også disse funktioner fra C-sproget for at tildele / de-allokere hukommelse.
Bortset fra disse funktioner introducerer C ++ to nye operatører, som er mere effektive til at styre den dynamiske hukommelse. Disse er 'nye' operatører til tildeling af hukommelse og 'slet' operatør til de-allokering af hukommelse.
I denne vejledning lærer vi mere om nye og slette operatorer på C ++ sprog.
Den 'nye' operatør
Den 'nye' operatør tildeler hukommelse til en variabel eller enhver anden enhed på en bunke.
Den generelle syntaks for den 'nye' operatør er:
pointer_variable_of_data_type = new data type;
Ovennævnte datatype kan være en hvilken som helst gyldig datatype, der understøttes af C ++. Det kan være en indbygget datatype eller en hvilken som helst brugerdefineret datatype inklusive klasser og strukturer.
For eksempel,
hvilket site giver en gennemgang af registreringsdatabasen rengøringssoftware
int *ptr = NULL; ptr = new int();
I ovenstående eksempel har vi deklareret en pointervariabel 'ptr' til heltal og initialiseret den til null. Derefter tildeler vi hukommelsen til variablen “ptr” ved hjælp af den “nye” operator. Hvis der er hukommelse på bunken, vil den anden erklæring være vellykket. Hvis der ikke er nogen hukommelse tilgængelig, kaster den nye operatør undtagelsen 'std :: bad_alloc'.
Derfor er det en bedre idé at kontrollere, om hukommelsen tildeles med succes af den nye operatør, før du bruger denne variabel eller enhed i programmet.
Vi kan også initialisere variabler ved hjælp af den nye operator som følger:
ptr = new int(10);
I ovenstående eksempel er markørvariablen 'ptr' den allokerede hukommelse ved hjælp af den nye operator, og på samme tid er den tildelte værdi 10. Dette er endnu en måde til initialisering i C ++.
Brug af den 'nye' operatør med arrays
Endnu en anden anvendelse af den 'nye' operatør tildeler hukommelse til arrays. Her specificerer vi antallet af elementer, der skal tildeles til arrayet.
Et eksempel på tildeling af matrixelementer ved hjælp af 'ny' operator gives nedenfor:
bedste gratis youtube til mp3 konverter
int* myarray = NULL; myarray = new int(10);
Her tildeler den nye operator 10 sammenhængende elementer af typen heltal til markøren variabel myarray og returnerer markøren til det første element i myarray.
Slet operatør
Den hukommelse, der tildeles dynamisk ved hjælp af den nye operatør, skal frigøres eksplicit af programmøren. Til dette formål får vi operatøren 'slet'.
Den generelle syntaks for sletteoperatoren er:
delete pointer_variable;
Så vi kan frigøre den hukommelse, der er allokeret til ptr-variablen ovenfor, som følger:
delete ptr;
Denne erklæring frigør den hukommelse, der er allokeret til variablen 'ptr', tilbage til hukommelsespuljen.
Vi kan også bruge sletteoperatøren til at frigøre den hukommelse, der er allokeret til arrays.
For eksempel,hukommelsen allokeret til arrayet myarray ovenfor kan frigøres som følger:
delete() myarray;
Bemærk den abonnementsoperatør, der blev brugt med sletteoperatoren. Dette er fordi, da vi har tildelt en række elementer, skal vi frigøre alle placeringer.
I stedet for hvis vi havde brugt udsagnet,
delete myarray;
Vi ved, at myarray peger på det første element i arrayet, så ovenstående udsagn sletter kun det første element i arrayet. Brug af abonnement “()” angiver, at variablen, hvis hukommelse frigøres, er en matrix, og al den tildelte hukommelse skal frigøres.
Nedenstående programmeringseksempel viser brugen af nye og slette operatorer i C ++.
// Example program #include #include using namespace std; int main() { int *ptr = NULL; ptr = new int(); int *var = new int(12); if(!ptr) { cout<<'bad memory allocation'< Produktion:
hukommelse tildelt med succes
* ptr = 10
* var = 12
myarray-værdier: 1 2 3 4 5 6 7 8 9 10
Skærmbilledet for det samme er angivet nedenfor.
I ovenstående kodeeksempel har vi demonstreret brugen af nye og sletningsoperatorer. Vi har brugt den 'nye' operatør til at allokere hukommelse til en variabel, arrays og samt initialisere en anden variabel med en værdi. Derefter sletter vi disse enheder ved hjælp af sletteoperatoren.
Konklusion
Dette handler om de nye og slette operatører af C ++ for så vidt angår standard datatyper. Vi kan også bruge nye og slette operatører til brugerdefinerede datatyper som klasser og strukturer.
Vi lærer mere om brugen af disse operatorer til oprettelse af objekter, når vi lærer objektorienteret programmering ved hjælp af C ++.
=> Se på C ++ begynderguiden her.
Anbefalet læsning
- Unix Shell Script Aritmetiske og Boolske operatøreksempler
- MongoDB opdater og slet dokument med eksempler
- C ++ operatører, typer og eksempler
- Python-operatører
- Python DateTime-tutorial med eksempler
- Klip kommando i Unix med eksempler
- Boblesortering i C ++ med eksempler
- Unix Cat Command Syntax, indstillinger med eksempler