Arreglos dinámicos
En cursos anteriores sobre matrices, analizamos la creación de una matriz como esta:
 
const int Nmax = 1000; int A[Nmáx]; o esto: intA[1000];
Este método crea una matriz estática. Una desventaja es que el tamaño y el tipo de los elementos de la matriz no se pueden cambiar mientras se ejecuta el programa. 
En el ejemplo anterior, se crea una matriz estática de 1000 elementos. Es decir, se asigna un área en la memoria para almacenar 1000 elementos de tipo int (una matriz de 1000 elementos de tipo int). La dirección del comienzo de la matriz se almacena en la variable  A. Si necesita procesar una matriz de más de 1000 elementos, deberá cambiar la descripción y volver a compilar el programa. Cuando se trabaja con arreglos pequeños, se desperdiciará la mayor parte de la memoria asignada para un arreglo estático.

Para un uso eficiente de la memoria de la computadora, es necesario asignarla dinámicamente. En otras palabras, la memoria para los objetos debe asignarse durante la ejecución del programa según sea necesario (creando nuevos objetos).

En C++, las operaciones  new y delete  están diseñadas para asignar dinámicamente la memoria de la computadora.  Operación nueva  asigna memoria del área de memoria libre y la operación delete desasigna la memoria asignada. 
 
Un ejemplo de creación y eliminación de una variable dinámica
int *A = nuevo int; // crea un objeto de tipo int *A = 15; // la inicialización del objeto ocurre a través de un puntero (*) // la inicialización se puede hacer inmediatamente // al declarar un objeto dinámico int *B = nuevo int(25); cout << *A << " " << *B; // valor de salida por puntero eliminarA; // memoria asignada liberada borrar B; La operación new crea un objeto del tipo dado, le asigna memoria y devuelve un puntero del tipo correcto a la ubicación de memoria dada. Si no se puede asignar la memoria, por ejemplo, si no hay áreas libres, se devuelve un puntero nulo, es decir, el puntero devolverá el valor 0. La asignación de memoria es posible para cualquier tipo de datos:  int , flotante , doblechar etc.

De la misma manera, en C++ puede crear una matriz dinámica que utilizará la asignación de memoria dinámica. El tamaño de dicha matriz, que se puede utilizar mientras el programa se ejecuta, por ejemplo, desde el teclado, para crear variables dinámicas.
 
En sintaxis C
intN; scanf("%d", &N); int *mas = malloc (tamaño(int) * N); // más tarde para cambiar el tamaño de la matriz // utilizado por realloc. ... gratis(más); // libera la memoria asignada
En sintaxis C++
intN; cin>> NORTE; int*A = nuevo int[N]; // para cambiar el tamaño de la matriz, puede // transferir datos a otra matriz y borrar la anterior ... eliminar []mas; // libera la memoria asignada // los corchetes indican // que estamos liberando memoria debajo de la matriz