new delete operators c with examples
Istražite sve o novim / brisanje operatora u C ++.
Varijable i statičke nizove u C ++-u već smo vidjeli u našim ranijim vodičima.
Što se tiče memorije dodijeljene varijablama i nizovima, to je statička memorija koju dodjeljuje prevoditelj ovisno o tipu podataka (u slučaju varijabli) i dimenzijama predviđenim za nizove.
Memorija koju je dodijelio prevoditelj raspoređuje se na stog. Ali u većini slučajeva možda nismo svjesni točne količine memorije koja nam je potrebna.
=> Ovdje pročitajte popularne serije obuke za C ++.
Ono što bismo učinili je dodijeliti i raspodijeliti memoriju koliko god želimo, a također i kada i kada to želimo. To se postiže dinamičkim dodjeljivanjem memorije. Za razliku od statičke dodjele, dinamički dodijeljena memorija dodjeljuje se na hrpu.
Dinamičko dodjeljivanje memorije korisno je jer možemo dodijeliti memoriju promjenjive veličine što ne možemo postići dodijeljenom memorijom kompajlera. Imamo fleksibilnost dodjeljivanja memorije kad nam treba i raspodjele je kad nam ne treba.
No, osim ove upotrebe, moramo imati na umu da je u slučaju dinamički dodijeljene memorije odgovornost korisnika da dodijeli memoriju. Ako zaboravimo de-alocirati memoriju, to uzrokuje curenje memorije pri čemu se memorija ne oslobađa dok se program ne završi.
To bi moglo rezultirati previše korištenjem memorije i time uzrokovati ozbiljna uska grla.
Što ćete naučiti:
- Dinamička dodjela memorije
- 'Novi' operator
- Korištenje 'novog' operatora s nizovima
- Operator brisanja
- Zaključak
- Preporučena literatura
Dinamička dodjela memorije
C jezik koristi funkcije 'malloc', 'calloc' i 'realloc' za dinamičku alokaciju memorije. Da bi dodijelio memoriju koja je dinamički dodijeljena tim funkcijama, koristi 'besplatni' poziv funkcije. Jezik C ++ također podržava ove funkcije iz jezika C za dodjelu / odvajanje memorije.
Osim ovih funkcija, C ++ uvodi dva nova operatora koja su učinkovitija za upravljanje dinamičkom memorijom. To su operator 'new' za dodjelu memorije i operator 'delete' za uklanjanje memorije.
U ovom uputstvu naučit ćemo više o novim i operaterima brisanja na jeziku C ++.
'Novi' operator
Operator 'novi' dodjeljuje memoriju za varijablu ili bilo koji drugi entitet na hrpi.
Opća sintaksa operatora 'novi' je:
pointer_variable_of_data_type = new data type;
Gore navedeni tip podataka može biti bilo koji valjani tip podataka koji podržava C ++. To može biti ugrađeni tip podataka ili bilo koji korisnički definirani tip podataka, uključujući klase i strukture.
Na primjer,
postoji li vr za xbox one
int *ptr = NULL; ptr = new int();
U gornjem primjeru proglasili smo pokazivačku varijablu ‘ptr’ cijelom brojem i inicijalizirali je nulom. Zatim pomoću operatora 'new' dodijeljujemo memoriju varijabli 'ptr'. Ako je memorija dostupna na hrpi, druga izjava će biti uspješna. Ako nema dostupne memorije, tada novi operater baca iznimku “std :: bad_alloc”.
Stoga je bolja ideja provjeriti je li novi operator uspješno dodijelio memoriju prije korištenja ove varijable ili entiteta u programu.
Također možemo inicijalizirati varijable pomoću novog operatora na sljedeći način:
ptr = new int(10);
U gornjem primjeru, varijabla pokazivača 'ptr' dodijeljena je memorija pomoću novog operatora, a istodobno je dodijeljena vrijednost 10. Ovo je još jedan način inicijalizacije u C ++.
Korištenje 'novog' operatora s nizovima
Još jedna upotreba 'novog' operatora je dodjela memorije za nizove. Ovdje određujemo broj elemenata koji se dodjeljuju za niz.
Primjer dodjele elemenata niza pomoću operatora “new” dan je u nastavku:
int* myarray = NULL; myarray = new int[10];
Ovdje novi operator dodjeljuje 10 kontinuiranih elemenata tipa integer tipa pokazivačkoj varijabli myarray i vraća pokazivač na prvi element myarray.
najbolji besplatni Windows 10 čistač registra -
Operator brisanja
Programer mora izričito osloboditi memoriju koja se dinamički dodjeljuje pomoću novog operatora. U tu svrhu imamo operatora 'brisanje'.
Opća sintaksa operatora delete je:
delete pointer_variable;
Tako možemo osloboditi memoriju dodijeljenu gornjoj varijabli ptr na sljedeći način:
delete ptr;
Ova izjava oslobađa memoriju dodijeljenu varijabli 'ptr' natrag u memorijsko spremište.
Operator brisanja također možemo koristiti za oslobađanje memorije dodijeljene nizovima.
Na primjer,memorija dodijeljena gornjem nizu myarray može se osloboditi na sljedeći način:
delete[] myarray;
Obratite pažnju na operator indeksa koji se koristi s operatorom brisanja. To je zato što, kako smo dodijelili niz elemenata, moramo osloboditi sve lokacije.
Umjesto toga, da smo koristili izjavu,
delete myarray;
Znamo da myarray pokazuje na prvi element niza, tako da će gornji izraz izbrisati samo prvi element niza. Upotreba indeksa “[]” označava da je varijabla čija se memorija oslobađa niz i da se oslobađa sva dodijeljena memorija.
Sljedeći primjer programiranja prikazuje upotrebu novih i brisanje operatora u 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'< Izlaz:
memorija uspješno dodijeljena
* ptr = 10
* var = 12
miarray vrijednosti: 1 2 3 4 5 6 7 8 9 10
Snimak zaslona za isti dat je u nastavku.
U gornjem primjeru koda pokazali smo upotrebu novih i brisanje operatora. Koristili smo operater “new” da dodijelimo memoriju za varijablu, nizove i kao i inicijaliziramo drugu varijablu s vrijednošću. Zatim te entitete brišemo pomoću operatora delete.
Zaključak
Ovo je sve o novim i delete operaterima C ++ što se tiče standardnih tipova podataka. Također možemo koristiti nove i operatore brisanja za korisnički definirane tipove podataka kao klase i strukture.
O upotrebi ovih operatora za stvaranje objekata naučit ćemo više kada naučimo objektno orijentirano programiranje pomoću C ++.
=> Ovdje pogledajte vodič za početnike C ++.
Preporučena literatura
- Primjeri aritmetičkih i logičkih operatora skripte ljuske Unix
- MongoDB Ažuriranje i brisanje dokumenata s primjerima
- C ++ operatori, vrste i primjeri
- Python operateri
- Python DateTime Vodič s primjerima
- Izreži naredbu u Unixu s primjerima
- Razvrstavanje mjehurića na C ++ s primjerima
- Sintaksa naredbe Unix Cat, mogućnosti s primjerima