*   >> Lectura Educación Artículos >> science >> programación

| C ++ | Dinámica Memory.

En general, cuando se está codificando, tiene que especificar la cantidad de variables que estarán en su programa, pero, después de compilar, no se puede cambiar la cantidad de ellos. La memoria dinámica nos permite asignar memoria (del montón) y liberarla mientras que nuestro programa se está ejecutando.

Para ello, vamos a utilizar el nueva

y Eliminar

operadores y algunos punteros.

Recuerde siempre para liberar la memoria asignada, de lo contrario habrá una pérdida de memoria.

Los tipos deben ser los mismos

 flotar * ptrNewVariable = new int.; //Wrong.float* PtrNewVariable = new float; //Right.
int* PtrNewVariable = new int; //Tenemos un nuevo int variabledelete ptrNewVariable; //Liberamos que 

Ejemplo:.

Estamos haciendo un juego, por lo que pedimos al jugador la cantidad de monstruos que él querría pelear con

 nt main () {cout. int nNúmero; //Guardar el número en una variable de cin >> nNúmero; //Declaramos un puntero que apunte a un objeto CMonster. CMonster es una clase hipotética.

CMonster * ptrMonsters = new CMonster [nNúmero]; //Para acceder a los objetos: ptrMonsters [índice] -> Lucha (); //Al igual que un array normal. //Cuando hayamos terminado liberamos la memoria. delete [] ptrMonsters; //Recuerda la forma gama de eliminación. ptrMonsters = NULL; //Establecemos que en nulo por lo que no estará apuntando a la memoria que no está asignada. return 0;}

Recuerde:

- Cuando usamos nuevo, España debemos usar borrar

- Cuando usamos new [], España debemos usar delete [].


Evitar pérdidas de memoria.


Situación 1.

 vacío Buscar () {int * ptrNewVariable = new int [5]; //Variable asignada dinámico Nuevo. //No usamos delete [] ptrNewVariable. Oopss. //Fin de la función. El puntero se elimina y la dirección de memoria se pierde. Pérdida de memoria} 

Situación 2.

 int * ptrNewVariable = new int.; //El puntero tiene el address.ptrNewVariable variable = new int; //Pérdida de memoria aquí, el puntero contiene la nueva dirección de la variable, //pero perdió la anterior, por lo que no será capaz de liberar it.

delete ptrNewVariable; //Eliminar la última memoria asignada, pero no el primero.

Copyright © 2008 - 2016 Lectura Educación Artículos,https://lectura.nmjjxx.com All rights reserved.