new delete operators c with examples
Utforsk alt om nye / slett operatører i C ++.
Vi har allerede sett variabler og statiske matriser i C ++ i våre tidligere opplæringsprogrammer.
Når det gjelder minnet som er tildelt variablene og matriser, er det det statiske minnet som tildeles av kompilatoren avhengig av datatypen (i tilfelle variabler) og dimensjonene som er gitt for matriser.
Minnet som tildeles av kompilatoren tildeles på bunken. Men i de fleste tilfeller er vi kanskje ikke klar over den nøyaktige mengden minne vi trenger.
=> Les gjennom den populære C ++ treningsserien her.
Det vi ville gjort er å tildele og de-allokere så mye minne som vi vil, og også når og når vi vil ha det. Dette gjøres ved å tildele minnet dynamisk. I motsetning til statisk allokering tildeles dynamisk tildelt minne på dyngen.
Dynamisk minnetildeling er nyttig ettersom vi kan tildele minne med variabel størrelse som vi ikke kan oppnå med kompilatoren allokert minne. Vi har fleksibiliteten til å tildele minne når vi trenger og avdeler det når vi ikke trenger det.
Men bortsett fra disse bruksområdene, må vi også huske at i tilfelle av dynamisk tildelt minne, er det brukerens ansvar å avfordele minnet. Hvis vi glemmer å allokere minnet, forårsaker det en minnelekkasje der minnet ikke blir fordelt før programmet avsluttes.
Dette kan føre til at det brukes for mye minne og dermed forårsaker alvorlige flaskehalser.
Hva du vil lære:
- Dynamisk minnetildeling
- Den “nye” operatøren
- Bruke den “nye” operatøren med arrays
- Sletteoperatøren
- Konklusjon
- Anbefalt lesing
Dynamisk minnetildeling
C språk bruker ‘malloc’, ‘calloc’ og ‘realloc’ funksjoner for å fordele minne dynamisk. For å avfordele minnet som er tildelt dynamisk med disse funksjonene, bruker det ‘gratis’ funksjonsanrop. C ++ språk støtter også disse funksjonene fra C-språket for å tildele / de-allokere minne.
Bortsett fra disse funksjonene introduserer C ++ to nye operatører som er mer effektive for å administrere det dynamiske minnet. Disse er ‘ny’ operatør for tildeling av minne og ‘slett’ operatør for avfordeling av minne.
I denne opplæringen vil vi lære mer om nye og slette operatører på C ++ språk.
Den “nye” operatøren
Den 'nye' operatøren tildeler minne til en variabel eller annen enhet på en bunke.
Den generelle syntaksen til den 'nye' operatøren er:
pointer_variable_of_data_type = new data type;
Datatypen nevnt ovenfor kan være hvilken som helst gyldig datatype som støttes av C ++. Det kan være en innebygd datatype eller hvilken som helst brukerdefinert datatype inkludert klasser og strukturer.
For eksempel,
c ++ utvalgssorteringsalgoritme
int *ptr = NULL; ptr = new int();
I eksemplet ovenfor har vi erklært en pekervariabel ‘ptr’ til heltall og initialisert den til null. Ved å bruke den 'nye' operatoren tildeler vi minne til 'ptr' -variabelen. Hvis minne er tilgjengelig på dyngen, vil den andre uttalelsen lykkes. Hvis det ikke er noe minne tilgjengelig, kaster den nye operatøren unntak fra “std :: bad_alloc”.
Derfor er det en bedre ide å sjekke om minnet tildeles vellykket av den nye operatøren før du bruker denne variabelen eller enheten i programmet.
Vi kan også initialisere variabler ved hjelp av den nye operatoren som følger:
ptr = new int(10);
I eksemplet ovenfor er pekervariabelen “ptr” det tildelte minnet ved hjelp av den nye operatøren, og samtidig er den tildelte verdien 10. Dette er enda en måte å initialisere i C ++.
Bruke den “nye” operatøren med arrays
Nok en annen bruk av den 'nye' operatøren tildeler minne til matriser. Her spesifiserer vi antall elementer som skal tildeles for matrisen.
Et eksempel på tildeling av matriseelementer ved hjelp av 'ny' operator er gitt nedenfor:
int* myarray = NULL; myarray = new int(10);
Her tildeler den nye operatøren 10 sammenhengende elementer av typen heltall til pekervariabelen myarray og returnerer pekeren til det første elementet i myarray.
Sletteoperatøren
Minnet som er tildelt dynamisk ved hjelp av den nye operatøren, må frigjøres eksplisitt av programmereren. For dette formålet får vi operatøren 'slett'.
Den generelle syntaksen til sletteoperatøren er:
delete pointer_variable;
Så vi kan frigjøre minnet som er tildelt ptr-variabelen ovenfor som følger:
delete ptr;
Denne setningen frigjør minnet som er tildelt variabelen “ptr” tilbake til minnepoolen.
Vi kan også bruke sletteoperatøren for å frigjøre minnet som er tildelt matriser.
For eksempel,minnet som er tildelt arrayet myarray ovenfor kan frigjøres på følgende måte:
delete() myarray;
Legg merke til abonnementsoperatøren som brukes med sletteoperatøren. Dette er fordi, da vi har tildelt en rekke elementer, må vi frigjøre alle stedene.
I stedet, hvis vi hadde brukt uttalelsen,
delete myarray;
Vi vet at myarray peker på det første elementet i matrisen, så utsagnet ovenfor vil bare slette det første elementet i matrisen. Bruk av tegnet “()” indikerer at variabelen hvis minne frigjøres er en matrise og alt minnet som tildeles skal frigjøres.
Programmeringseksemplet nedenfor viser bruken av nye og slett operatører 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'< Produksjon:
minne tildelt vellykket
* ptr = 10
* var = 12
myarray-verdier: 1 2 3 4 5 6 7 8 9 10
Skjermbildet for det samme er gitt nedenfor.

I ovennevnte kodeeksempel har vi demonstrert bruken av nye og slett operatører. Vi har brukt den 'nye' operatøren til å tildele minne til en variabel, arrays og i tillegg til å initialisere en annen variabel med en verdi. Deretter sletter vi disse enhetene ved hjelp av sletteoperatøren.
windows 10 standard gateway ikke tilgjengelig
Konklusjon
Dette handler om de nye og slette operatørene av C ++ når det gjelder standard datatyper. Vi kan også bruke nye og slette operatører for brukerdefinerte datatyper som klasser og strukturer.
Vi vil lære mer om bruken av disse operatørene for å lage objekter når vi lærer objektorientert programmering ved hjelp av C ++.
=> Ta en titt på C ++ Beginners Guide her.
Anbefalt lesing
- Unix Shell Script Aritmetic og Boolean Operators Eksempler
- MongoDB oppdater og slett dokument med eksempler
- C ++ operatører, typer og eksempler
- Python-operatører
- Python DateTime Tutorial med eksempler
- Klipp kommandoen i Unix med eksempler
- Boblesortering i C ++ med eksempler
- Unix Cat Command Syntax, Alternativer med eksempler