new delete operators c with examples
Exploreu tot sobre operadors nous / suprimits a C ++.
Ja hem vist variables i matrius estàtics a C ++ als nostres tutorials anteriors.
Pel que fa a la memòria assignada a les variables i matrius, és la memòria estàtica la que assigna el compilador en funció del tipus de dades (en cas de variables) i les dimensions proporcionades per a les matrius.
La memòria assignada pel compilador s’assigna a la pila. Però, en la majoria dels casos, és possible que no siguem conscients de la quantitat exacta de memòria que necessitem.
=> Llegiu aquí la popular sèrie de formació C ++.
El que faríem és assignar i desassignar tanta memòria com vulguem i també quan i quan vulguem. Això es fa assignant dinàmicament la memòria. A diferència de l’assignació estàtica, la memòria assignada dinàmicament s’assigna al munt.
L’assignació dinàmica de memòria és útil ja que podem assignar memòria de mida variable que no podem aconseguir amb la memòria assignada pel compilador. Tenim la flexibilitat d’assignar memòria quan la necessitem i desassignar-la quan no la necessitem.
Però, a part d’aquests usos, també hem de tenir en compte que, en cas de memòria assignada dinàmicament, és responsabilitat de l’usuari desassignar la memòria. Si ens oblidem de desassignar la memòria, provoca una fuga de memòria en què la memòria no es reparteix fins que finalitza el programa.
Això pot provocar que s’utilitzi massa memòria i, per tant, provocar greus colls d’ampolla.
Què aprendreu:
- Assignació de memòria dinàmica
- El 'nou' Operador
- Utilització del 'nou' operador amb matrius
- L'operador de supressió
- Conclusió
- Lectura recomanada
Assignació de memòria dinàmica
El llenguatge C utilitza funcions ‘malloc’, ‘calloc’ i ‘realloc’ per assignar la memòria de manera dinàmica. Per desassignar la memòria assignada dinàmicament amb aquestes funcions, utilitza la trucada de funció 'lliure'. El llenguatge C ++ també admet aquestes funcions des del llenguatge C per assignar / desassignar memòria.
A part d’aquestes funcions, C ++ introdueix dos nous operadors que són més eficients per gestionar la memòria dinàmica. Es tracta d’un operador ‘nou’ per assignar memòria i un operador ‘esborrat’ per desassignar memòria.
En aquest tutorial, aprendrem més sobre operadors nous i de supressió en llenguatge C ++.
El 'nou' Operador
L'operador 'nou' assigna memòria a una variable o a qualsevol altra entitat d'un munt.
La sintaxi general de l'operador 'nou' és:
pointer_variable_of_data_type = new data type;
El tipus de dades esmentat anteriorment pot ser qualsevol tipus de dades vàlid admès per C ++. Pot ser un tipus de dades integrat o qualsevol tipus de dades definit per l'usuari, incloses les classes i les estructures.
Per exemple,
el millor programari gratuït de recuperació de dades de Windows 10
int *ptr = NULL; ptr = new int();
A l’exemple anterior, hem declarat una variable punter ‘ptr’ a enter i l’hem inicialitzat a nul. A continuació, mitjançant l'operador 'nou' assignem memòria a la variable 'ptr'. Si hi ha memòria disponible a l’emmagatzematge dinàmic, la segona sentència tindrà èxit. Si no hi ha memòria disponible, el nou operador llança l'excepció 'std :: bad_alloc'.
Per tant, és millor comprovar si el nou operador assigna correctament la memòria abans d’utilitzar aquesta variable o entitat al programa.
També podem inicialitzar variables utilitzant el nou operador de la següent manera:
ptr = new int(10);
A l'exemple anterior, la variable de punter 'ptr' és la memòria assignada mitjançant el nou operador i, al mateix temps, el valor assignat és 10. Aquesta és una altra forma d'inicialització en C ++.
Utilització del 'nou' operador amb matrius
Un altre ús del 'nou' operador és assignar memòria per a matrius. Aquí especifiquem el nombre d'elements que s'han d'assignar a la matriu.
A continuació es mostra un exemple d'assignació d'elements de matriu mitjançant l'operador 'nou':
int* myarray = NULL; myarray = new int(10);
Aquí, el nou operador assigna 10 elements continus de tipus enter a la variable punter myarray i retorna el punter al primer element de myarray.
L'operador de supressió
La memòria assignada dinàmicament mitjançant el nou operador ha de ser alliberada explícitament pel programador. Per a això, se'ns proporciona l'operador 'esborra'.
La sintaxi general de l’operador de supressió és:
delete pointer_variable;
Així, podem alliberar la memòria assignada a la variable ptr anterior de la següent manera:
delete ptr;
Aquesta sentència allibera la memòria assignada a la variable 'ptr' al grup de memòria.
També podem utilitzar l’operador de supressió per alliberar la memòria assignada a matrius.
Per exemple,la memòria assignada a la matriu de matriu anterior es pot alliberar de la següent manera:
delete() myarray;
Tingueu en compte l’operador de subíndex utilitzat amb l’operador de supressió. Això es deu al fet que, com hem assignat la matriu d'elements, hem d'alliberar totes les ubicacions.
En canvi, si haguéssim utilitzat la declaració,
delete myarray;
Sabem que myarray apunta al primer element de la matriu, de manera que la sentència anterior només suprimirà el primer element de la matriu. Mitjançant l’índex “()”, s’indica que la variable la memòria de la qual s’allibera és una matriu i que s’ha de alliberar tota la memòria assignada.
L'exemple de programació següent mostra l'ús d'operadors nous i de supressió en 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'< Sortida:
la memòria s'ha assignat correctament
* ptr = 10
* var = 12
valors myarray: 1 2 3 4 5 6 7 8 9 10
A continuació es mostra la captura de pantalla del mateix.

A l'exemple de codi anterior, hem demostrat l'ús d'operadors nous i de supressió. Hem utilitzat l'operador 'nou' per assignar memòria a una variable, matrius i inicialitzar una altra variable amb un valor. A continuació, suprimim aquestes entitats mitjançant l'operador de supressió.
Conclusió
Això es tracta dels operadors nous i de supressió de C ++ pel que fa als tipus de dades estàndard. També podem utilitzar operadors nous i suprimidors per a tipus de dades definits per l'usuari com a classes i estructures.
Aprendrem més sobre l’ús d’aquests operadors per crear objectes quan aprenem programació orientada a objectes mitjançant C ++.
=> Mireu aquí la guia per a principiants de C ++.
fase del cicle de vida del desenvolupament de programari
Lectura recomanada
- Exemples d'operadors aritmètics i booleans d'escriptura Shell Unix
- Actualitzeu i suprimiu el document amb exemples de MongoDB
- Operadors de C ++, tipus i exemples
- Operadors de Python
- Tutorial de Python DateTime amb exemples
- Talla l'ordre a Unix amb exemples
- Classificació de bombolles en C ++ amb exemples
- Sintaxi d'ordres Unix Cat, opcions amb exemples