new delete operators c with examples
Explorați totul despre operatorii noi / ștergeți în C ++.
Am văzut deja variabile și tablouri statice în C ++ în tutorialele noastre anterioare.
În ceea ce privește memoria alocată variabilelor și matricelor, memoria statică este alocată de compilator în funcție de tipul de date (în cazul variabilelor) și dimensiunile prevăzute pentru tablouri.
Memoria alocată de compilator este alocată pe stivă. Dar, în majoritatea cazurilor, este posibil să nu fim conștienți de cantitatea exactă de memorie de care avem nevoie.
=> Citiți aici seria populară de formare C ++.
Ceea ce am face este să alocăm și să alocăm câtă memorie dorim și, de asemenea, cât și când o dorim. Acest lucru se face prin alocarea dinamică a memoriei. Spre deosebire de alocarea statică, memoria alocată dinamic este alocată pe heap.
Alocarea dinamică a memoriei este utilă deoarece putem aloca memorie cu dimensiuni variabile pe care nu o putem realiza cu memoria alocată de compilator. Avem flexibilitatea de a aloca memorie atunci când avem nevoie și de a o aloca atunci când nu avem nevoie de ea.
Dar, în afară de aceste utilizări, trebuie să ținem cont și de faptul că, în cazul memoriei alocate dinamic, este responsabilitatea utilizatorului să aloce memoria. Dacă uităm să alocăm memoria, atunci aceasta produce o scurgere de memorie în care memoria nu este alocată până când programul nu se termină.
Acest lucru ar putea duce la utilizarea a prea multă memorie și, prin urmare, provoacă blocaje serioase.
Ce veți învăța:
- Alocarea dinamică a memoriei
- „Noul” Operator
- Utilizarea „noului” operator cu matrice
- Operatorul de ștergere
- Concluzie
- Lectură recomandată
Alocarea dinamică a memoriei
Limbajul C folosește funcțiile „malloc”, „calloc” și „realloc” pentru a aloca memoria dinamic. Pentru a aloca memoria alocată dinamic cu aceste funcții, acesta folosește apelul de funcție „gratuit”. Limbajul C ++ acceptă, de asemenea, aceste funcții din limbajul C pentru a aloca / de-aloca memoria.
În afară de aceste funcții, C ++ introduce doi operatori noi, care sunt mai eficienți pentru a gestiona memoria dinamică. Acestea sunt operatorul „nou” pentru alocarea memoriei și operatorul „șterge” pentru alocarea memoriei.
În acest tutorial, vom afla mai multe despre operatorii noi și ștergeri în limbajul C ++.
„Noul” Operator
Operatorul „nou” alocă memorie pentru o variabilă sau pentru orice altă entitate dintr-o grămadă.
Sintaxa generală a operatorului „nou” este:
pointer_variable_of_data_type = new data type;Tipul de date menționat mai sus poate fi orice tip de date valid acceptat de C ++. Poate fi un tip de date încorporat sau orice tip de date definite de utilizator, inclusiv clase și structuri.
De exemplu,
Cum deschid un fișier EPS în Windows 10
int *ptr = NULL; ptr = new int();În exemplul de mai sus, am declarat o variabilă pointer „ptr” la întreg și am inițializat-o la nul. Apoi folosind operatorul „nou” alocăm memorie variabilei „ptr”. Dacă memoria este disponibilă în heap, a doua instrucțiune va avea succes. Dacă nu există memorie disponibilă, atunci noul operator aruncă excepția „std :: bad_alloc”.
Prin urmare, este o idee mai bună să verificați dacă memoria este alocată cu succes de noul operator înainte de a utiliza această variabilă sau entitate în program.
De asemenea, putem inițializa variabile folosind noul operator astfel:
ptr = new int(10);În exemplul de mai sus, variabila pointer „ptr” este memoria alocată folosind noul operator și, în același timp, valoarea atribuită este 10. Acesta este încă un alt mod de inițializare în C ++.
Utilizarea „noului” operator cu matrice
O altă utilizare a „noului” operator este alocarea de memorie pentru tablouri. Aici specificăm numărul de elemente care urmează să fie alocate pentru matrice.
Un exemplu de alocare a elementelor matricei folosind operatorul „nou” este dat mai jos:
int* myarray = NULL; myarray = new int(10);Aici, noul operator alocă 10 elemente continue de tip întreg la variabila pointer myarray și returnează indicatorul la primul element al myarray.
Operatorul de ștergere
Memoria alocată dinamic folosind noul operator trebuie să fie eliberată în mod explicit de către programator. În acest scop, ni se oferă operatorul „șterge”.
Sintaxa generală a operatorului de ștergere este:
delete pointer_variable;Deci, putem elibera memoria alocată variabilei ptr de mai sus, după cum urmează:
delete ptr;Această declarație eliberează memoria alocată variabilei „ptr” înapoi în pool-ul de memorie.
De asemenea, putem folosi operatorul de ștergere pentru a elibera memoria alocată matricelor.
De exemplu,memoria alocată matricei matricei de mai sus poate fi eliberată după cum urmează:
delete() myarray;Rețineți operatorul de indice utilizat cu operatorul de ștergere. Acest lucru se datorează faptului că, deoarece am alocat o serie de elemente, trebuie să eliberăm toate locațiile.
gateway implicit nu este disponibil Windows 7
În schimb, dacă am fi folosit afirmația,
delete myarray;Știm că myarray indică primul element din matrice, deci declarația de mai sus va șterge doar primul element al matricei. Folosind indicele „()”, indică faptul că variabila a cărei memorie este eliberată este o matrice și toată memoria alocată trebuie eliberată.
Exemplul de programare de mai jos arată utilizarea operatorilor noi și ștergere în 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'< Ieșire:
memoria alocată cu succes
*ptr = 10
* var = 12
valorile myarray: 1 2 3 4 5 6 7 8 9 10
Captura de ecran pentru același lucru este dată mai jos.

În exemplul de cod de mai sus, am demonstrat utilizarea operatorilor noi și ștergere. Am folosit „noul” operator pentru a aloca memorie pentru o variabilă, tablouri și pentru a inițializa o altă variabilă cu o valoare. Apoi ștergem aceste entități folosind operatorul de ștergere.
Concluzie
Aceasta este totul despre operatorii noi și ștergeri ai C ++ în ceea ce privește tipurile de date standard. De asemenea, putem folosi operatori noi și ștergere pentru tipuri de date definite de utilizator ca clase și structuri.
Vom afla mai multe despre utilizarea acestor operatori pentru crearea obiectelor atunci când învățăm programarea orientată pe obiecte folosind C ++.
=> Consultați aici ghidul pentru începători C ++.
Lectură recomandată
- Unix Shell Script Exemple de operatori aritmetici și booleni
- Actualizați MongoDB și ștergeți documentul cu exemple
- Operatori C ++, tipuri și exemple
- Operatori Python
- Tutorial Python DateTime cu exemple
- Tăiați comanda în Unix cu exemple
- Sortare cu bule în C ++ cu exemple
- Sintaxa de comandă Unix Cat, Opțiuni cu exemple
