Qual é a diferença entre o operador novo e o de exclusão em C ++

Índice:

Anonim

o principal diferença entre o operador new e delete em C ++ é que new é usado para alocar memória para um objeto ou uma matriz, enquanto, delete é usado para desalocar a memória alocada usando o operador new.

Existem dois tipos de memória como memória estática e dinâmica. Suponha uma declaração como int a; matriz interna [10]; o programador já sabe quanta memória essas variáveis ​​requerem. Essa memória é uma memória estática. Às vezes, é difícil determinar quanta memória é necessária para armazenar dados. Portanto, a memória deve ser determinada em tempo de execução. Este tipo de memória é uma memória dinâmica. Usamos operadores novos e deletados nessas situações.

C ++, excluir operador, alocação de memória, novo operador

O que há de novo em C ++

O novo operador aloca memória. Consulte o programa abaixo.

Figura 1: programa C ++ 1 com novo operador

De acordo com o programa acima, o ptr é um ponteiro do tipo inteiro. Na linha 7, ptr aponta para a memória do tipo int. Na linha 8, o valor ptr apontando para se tornar 10. Imprimir * p fornecerá o valor 10.

Da mesma forma, é possível criar arrays usando new da seguinte maneira.

Figura 2: programa C ++ 2 com novo operador

De acordo com o programa acima, ptr é um ponteiro do tipo inteiro. Na linha 8, ptr aponta para a memória do tipo int que pode armazenar 5 elementos inteiros. Em seguida, os valores inteiros são armazenados na matriz. Finalmente, o loop for itera através do array e imprimirá os valores.

Além disso, é possível criar novos objetos usando o novo operador. Consulte o exemplo abaixo.

Figura 3: programa C ++ 3 com novo operador

A classe é o aluno e tem o construtor. No programa principal, ptr é um ponteiro do tipo Student. Na linha 13, o construtor é chamado. Portanto, um objeto do tipo Aluno é criado. A instrução cout dentro do construtor Student é executada e essa instrução é exibida no console.

O que é deletar em C ++

O operador delete ajuda a desalocar memória. Consulte o programa abaixo.

Figura 4: programa C ++ 1 com operador delete

No programa acima, ptr é um ponteiro do tipo int. Na linha 7, ele aponta para a memória do tipo int, enquanto na linha 8, é dado o valor 10. Além disso, na linha 11, ptr é excluído.

Figura 5: programa C ++ 2 com operador delete

De acordo com o programa acima, ptr é um ponteiro do tipo inteiro. Na linha 8, ptr aponta para a memória do tipo int, que pode armazenar 2 elementos inteiros. Em seguida, os valores inteiros são armazenados na matriz. Na linha 12, ptr é excluído. O operador delete desaloca a memória.

Diferença entre operador new e delete em C ++

Definição

Em resumo, new é um operador em C ++ que aloca memória para um objeto ou uma matriz de objetos. Em contraste, delete é um operador em C ++ que desaloca um bloco de memória previamente alocado para um objeto criado usando o novo operador. Essas definições contêm a principal diferença entre os operadores new e delete em C ++.

Uso

Conclusão

A diferença básica entre os operadores new e delete em C ++ é que new é usado para alocar memória para um objeto ou uma matriz, enquanto delete é usado para desalocar a memória alocada usando o operador new.

Referência:

1. New OPERATOR IN C - 47, Codearchery, 6 de março de 2017, disponível aqui.2. Delete Operator in C - 48, Codearchery, 22 de março de 2017, disponível aqui.

Qual é a diferença entre o operador novo e o de exclusão em C ++