Arrays dinâmicos
Em cursos anteriores sobre arrays, vimos como criar um array como este:
 
const int Nmax = 1000; int A[Nmax]; ou isto: intA[1000];
Este método cria um array estático. Uma desvantagem é que o tamanho e o tipo dos elementos da matriz não podem ser alterados enquanto o programa está em execução. 
No exemplo acima, um array estático de 1000 elementos é criado. Ou seja, uma área é alocada na memória para armazenar 1000 elementos do tipo int (um array de 1000 elementos do tipo int). O endereço do início do array é armazenado na variável  A. Se você precisar processar um array de mais de 1000 elementos, terá que alterar a descrição e recompilar o programa novamente. Ao trabalhar com arrays pequenos, a maior parte da memória alocada para um array estático será desperdiçada.

Para o uso eficiente da memória do computador, é necessário alocá-la dinamicamente. Em outras palavras, a memória para objetos deve ser alocada durante a execução do programa conforme necessário (criação de novos objetos).

Em C++, as operações  new e delete são projetadas para alocar dinamicamente a memória do computador.  Operação novo  aloca memória da área de memória livre, e a operação excluir desaloca a memória alocada. 
 
Um exemplo de criação e exclusão de uma variável dinâmica
int *A = novo int; // cria um objeto do tipo int *A = 15; // a inicialização do objeto ocorre através de um ponteiro (*) // a inicialização pode ser feita imediatamente // ao declarar um objeto dinâmico int *B = novo int(25); cout << *A << " " << *B; // valor de saída por ponteiro deleteA; // libera memória alocada excluir B; A operação new cria um objeto do tipo fornecido, aloca memória para ele e retorna um ponteiro do tipo correto para o local de memória fornecido. Se a memória não puder ser alocada, por exemplo, se não houver áreas livres, será retornado um ponteiro nulo, ou seja, o ponteiro retornará o valor 0. A alocação de memória é possível para qualquer tipo de dado: int , float , doublechar etc.

Da mesma forma, em C++ você pode criar um array dinâmico que usará alocação dinâmica de memória. O tamanho de tal array, que pode ser usado durante a execução do programa, por exemplo, a partir do teclado, para criar variáveis ​​dinâmicas.
 
Na sintaxe C
intN; scanf("%d", &N); int *mas = malloc (sizeof(int) * N); // depois para redimensionar o array // usado por realloc. ... grátis(mas); // libera a memoria alocada
Na sintaxe C++
intN; cin>> N; int*A = novo int[N]; // para alterar o tamanho do array, você pode // transfere dados para outro array e limpa o antigo ... excluir []mas; // libera a memoria alocada // colchetes indicam // que estamos liberando memória sob o array