C ++ ny operatør

C ++ ny operatør
Vi vil dekke hvordan vi effektivt administrerer tildeling i C ++ ved å bruke den 'nye' funksjonen gjennom bruk av praktiske eksempler.

I C ++ refererer begrepet “Dynamic Memory Deployment” til manuell tildeling av lagring av en programmerer. Heap er der distribuert delt minne er distribuert, mens stabelen er der ikke-statiske og lokale variabler skaffer seg hukommelsesressurser.

applikasjoner

  • Tildeling av lagring av dynamisk størrelse, som ikke er oppnåelig med kompilatorfordelt lagring bortsett fra varierende matriser, er en bruk av dynamisk minnetildeling.
  • Hovedfordelen er allsidigheten det gir til programmerere. Vi har absolutt autonomi til å tildele og frigjøre minne etter behov og som ikke lenger er nødvendig. Denne allsidigheten er nyttig i mange situasjoner.

Hvordan tildeler C ++ og omhandler minne?

Malloc () og Calloc () -metodene i C ++ brukes til å endre minne dynamisk ved utførelse. Mens gratis () -metoden brukes til å frigjøre minnet som er tildelt. Disse metodene er gitt av C ++ sammen med de to 'nye' og 'slett' -operatørene som gjør minnetildeling og frigjøring lettere og mer effektive.

Korrelasjonen mellom det 'nye' nøkkelordet og 'nye' operatøren ny

Disse to tingene er forskjellige fra hverandre.

To hendelser finner sted: minnedistribusjon og objektdannelse. Begge håndteres av det 'nye' nøkkelordet. Å ringe operatøren og ringe konstruktøren selv er prosedyrene for å tildele lagring. Operatøren 'nye' vil ikke ta noe ansvar for å påkalle konstruktøren, men det lar deg justere lagringsfordelingsstrategien. Det nye nøkkelordet har det ansvaret. Å ringe konstruktøren uten å bruke operatør ny er gjennomførbar.

Ny operatør

Etterspørselen etter minnetildeling på åpen lagring indikeres av den nye operatøren. Hvis nok minne er tilgjengelig, behandler en ny operatør data. Deretter initialiserer det og gir pekeren objekt adressen til det nylig tildelte og konfigurerte minnet.

Eksempel 1

Vi utfører denne koden for å vise hvordan de nye og slette operatørene kan brukes; Minnet vil bli dynamisk tildelt og utgitt.

#inkludere
ved hjelp av navneområdet STD;
int main ()

int* a = null;
a = ny (Nothrow) int;
hvis (!en)
cout << "Memory is not allocated\n";
ellers

*A = 45;
cout << "Value of a: " << *a << endl;

float *c = ny float (67.84);
cout << "Value of c: " << *c << endl;
int x = 6;
int *b = new (Nothrow) int [x];
hvis (!b)
cout << "Memory is not allocated\n";
ellers

for (int j = 0; j < x; j++)
b [j] = j+1;
cout << "A chunk of memory containing values: ";
for (int j = 0; j < x; j++)
cout << b[j] << " ";

slett a;
slett c;
slett [] b;
retur 0;

De nødvendige bibliotekene vil bli integrert. Deretter vil det standardnavneren bli lagt til som 'STD'. Her vil hovedfunksjonen () bli påkalt. Vi vil initialisere en peker og sette denne pekeren til 'null'. La oss be om lagring av variablene som brukes til en 'ny' operatør. Datatypen 'a' vil være 'heltall'. Tilstanden "if-elv" vil gjelde. Hvis den definerte tilstanden er oppfylt, vil ikke "cout" -uttalelsen vise teksten 'minnet ikke tildelt ". Ellers vil vi lagre verdien av pekeren.

Deretter viser 'cout' kommandoen verdien av pekeren. Nå vil vi be om en minneblokk ved å bruke den 'nye' operatøren. Vi spesifiserer den flytende punktverdien til variabelen 'C' ved å bruke den 'nye' operatøren. Nå vil 'cout' skrive ut verdien av variabel 'c'. Her spesifiserer vi størrelsen på minneblokken. Vi erklærer en variabel 'x' og setter sin datatype som et 'heltall'. Vi konstruerer en ny peker som heter 'B' og gir verdien til den ved å bruke den 'nye' operatøren.

Nok en gang vil "If-Else" -tilstanden bli brukt. Innenfor "ellers" uttalelsen har vi brukt "for" -erklæringen. Opprinnelig vil sløyfevariabelen 'J' bli erklært og vi definerer tilstanden. Deretter øker vi verdien av loopvariabelen med 1. Kommandoen 'cout' vil bli brukt til å skrive ut linjen 'en del av minne som inneholder verdier'. Nok en gang vil vi ansette 'for' -sløyfen.

Nå vil vi frigjøre det tildelte minnet ved bruk av "slett" -operatøren ". Før vi legger til 'Return 0' -kommandoen, frigjør vi blokken av tildelt minne ved å bruke matrisen.

Vi skaffer oss denne typen utfall etter å ha utført det ovennevnte programmet.

Eksempel 2

I dette tilfellet vil vi bruke den 'nye' operatøren for forskjellige objekter.

#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

int *l = null;
l = ny int ();
int *v = ny int (23);
hvis(!l)

cout<<"bad memory allocation"<
ellers

cout<<"memory allocated successfully"<*l = 20;
cout<<"*l = "<<*l<cout<<"*v = "<<*v<
dobbel *arr = null;
arr = ny dobbel [20];
hvis(!arr)
cout<<"memory not allocated"<ellers

for (int k = 0; k<20;k++)
arr [k] = k+1;
cout<<"arr values : ";
for (int k = 0; k<20;k++)
cout<< arr[k]<<"\t";

slett l;
slett v;
slett [] arr;
retur 0;

I illustrasjonen er integrasjonen av de nødvendige bibliotekene . Deretter vil navneområdet kjent som "STD" bli lagt til. Main () -metoden vil bli kalt. For å initialisere en peker, vil vi sette den til “NULL.”Verdien av variabelen“ I ”som brukes til den" nye "operatøren vil bli lagret her. Denne variabelenes datatype er “Heltall."If-elv" -tilstanden vil bli brukt. Hvis den spesifiserte tilstanden er oppfylt, vises teksten "dårlig minnetildeling" av "cout" -uttalelsen. Hvis ikke, vil vi holde pekerens verdi.

Deretter vises teksten "Memory tildelt vellykket". Pekerens verdi vil bli satt. Verdien av pekeren vil vises av 'cout' -kommandoen. Vi initialiserte matrisen med datatypen “Double” og ga den verdien “NULL.”Ved hjelp av den 'nye' operatøren definerer vi verdien av denne matrisen. Den bruker en "if-elv" -uttalelse. Når tilstanden er oppfylt, skriver "cout" -kommandoen ut "minnet som ikke er tildelt.”; ellers har vi brukt nestede "for" -uttalelser.

Før du definerer tilstanden, vil loopvariabelen “J” først bli spesifisert. Deretter legger vi 1 til verdien av 'J'. Arrayens verdier vil bli skrevet ut ved hjelp av 'cout' -kommandoen. Vi vil bruke "for" -løkken igjen. Nå bruker vi slettoperatøren. Vi vil frigjøre minnet som ble tildelt. Vi slipper blokken av allokert minne ved å bruke matrisen før vi legger til "Return 0" -uttalelsen.

Etter å ha implementert den nevnte koden, får vi ønsket resultat.

Konklusjon

Bruken av den 'nye' operatøren er i fokus for denne artikkelen. For brukerdefinerte datatyper i klasser og andre datatyper, vil vi bruke den 'nye' operatøren. Vi har utført to eksempler relatert til dette emnet. Det første eksemplet viser hvordan du bruker C ++ 'S' New 'Operator. Den siste illustrasjonen viser hvordan du bruker den "nye" operatøren på objekter.