new delete operators c with examples
Explorar tudo sobre novos / excluir operadores em C ++.
Já vimos variáveis e arrays estáticos em C ++ em nossos tutoriais anteriores.
No que diz respeito à memória alocada às variáveis e arrays, é a memória estática que é alocada pelo compilador dependendo do tipo de dados (no caso de variáveis) e das dimensões fornecidas para os arrays.
A memória alocada pelo compilador é alocada na pilha. Mas, na maioria dos casos, podemos não estar cientes da quantidade exata de memória de que precisamos.
=> Leia a popular série de treinamento C ++ aqui.
O que faríamos é alocar e desalocar tanta memória quanto quisermos e também como e quando quisermos. Isso é feito alocando dinamicamente a memória. Em contraste com a alocação estática, a memória alocada dinamicamente é alocada no heap.
A alocação de memória dinâmica é útil, pois podemos alocar memória de tamanho variável que não podemos alcançar com a memória alocada do compilador. Temos a flexibilidade de alocar memória quando precisamos e desalocá-la quando não precisamos dela.
Mas, além desses usos, também temos que ter em mente que, no caso de memória alocada dinamicamente, é responsabilidade do usuário desalocar a memória. Se esquecermos de desalocar a memória, isso causa um vazamento de memória, no qual a memória não é desalocada até que o programa termine.
Isso pode resultar no uso de muita memória e, portanto, causar sérios gargalos.
O que você aprenderá:
- Alocação de memória dinâmica
- O “novo” Operador
- Usando o “novo” operador com matrizes
- O operador de exclusão
- Conclusão
- Leitura recomendada
Alocação de memória dinâmica
A linguagem C usa as funções ‘malloc’, ’calloc’ e ‘realloc’ para alocar memória dinamicamente. Para desalocar a memória alocada dinamicamente com essas funções, ele usa uma chamada de função 'livre'. A linguagem C ++ também suporta essas funções da linguagem C para alocar / desalocar memória.
Além dessas funções, C ++ apresenta dois novos operadores mais eficientes para gerenciar a memória dinâmica. Estes são operadores ‘novos’ para alocar memória e operadores ‘delete’ para desalocar memória.
Neste tutorial, aprenderemos mais sobre operadores novos e de exclusão na linguagem C ++.
O “novo” Operador
O operador “novo” aloca memória para uma variável ou qualquer outra entidade em um heap.
A sintaxe geral do operador “novo” é:
pointer_variable_of_data_type = new data type;O tipo de dados mencionado acima pode ser qualquer tipo de dados válido compatível com C ++. Pode ser um tipo de dados embutido ou qualquer tipo de dados definido pelo usuário, incluindo classes e estruturas.
Por exemplo,
programa grátis para baixar vídeos do youtube
int *ptr = NULL; ptr = new int();No exemplo acima, declaramos uma variável de ponteiro ‘ptr’ para inteiro e a inicializamos como nula. Então, usando o operador “novo”, alocamos memória para a variável “ptr”. Se houver memória disponível no heap, a segunda instrução terá êxito. Se nenhuma memória estiver disponível, o novo operador lança a exceção “std :: bad_alloc”.
Portanto, é uma ideia melhor verificar se a memória foi alocada com sucesso pelo novo operador antes de usar essa variável ou entidade no programa.
Também podemos inicializar variáveis usando o novo operador da seguinte maneira:
ptr = new int(10);No exemplo acima, a variável de ponteiro “ptr” é a memória alocada usando o novo operador e, ao mesmo tempo, o valor atribuído é 10. Esta é outra forma de inicialização em C ++.
onde encontrar a chave de segurança de rede no roteador
Usando o “novo” operador com matrizes
Outro uso do “novo” operador é alocar memória para matrizes. Aqui especificamos o número de elementos a serem alocados para a matriz.
Um exemplo de alocação de elementos da matriz usando o operador “novo” é fornecido abaixo:
int* myarray = NULL; myarray = new int(10);Aqui, o novo operador aloca 10 elementos contínuos do tipo inteiro para a variável de ponteiro myarray e retorna o ponteiro para o primeiro elemento de myarray.
O operador de exclusão
A memória alocada dinamicamente usando o novo operador deve ser liberada explicitamente pelo programador. Para isso, temos o operador “delete”.
A sintaxe geral do operador delete é:
delete pointer_variable;Portanto, podemos liberar a memória alocada para a variável ptr acima da seguinte maneira:
delete ptr;Essa instrução libera a memória alocada para a variável “ptr” de volta ao pool de memória.
Também podemos usar o operador delete para liberar a memória alocada para arrays.
Por exemplo,a memória alocada para a matriz myarray acima pode ser liberada da seguinte maneira:
delete() myarray;Observe o operador subscrito usado com o operador delete. Isso ocorre porque, como alocamos o array de elementos, precisamos liberar todos os locais.
Em vez disso, se tivéssemos usado a declaração,
delete myarray;Sabemos que myarray aponta para o primeiro elemento da matriz, portanto, a instrução acima excluirá apenas o primeiro elemento da matriz. Usando o subscrito “()”, indica que a variável cuja memória está sendo liberada é um array e toda a memória alocada deve ser liberada.
O exemplo de programação abaixo mostra o uso de operadores new e delete em 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'< Resultado:
memória alocada com sucesso
* ptr = 10
* var = 12
valores de myarray: 1 2 3 4 5 6 7 8 9 10
A captura de tela para o mesmo é fornecida abaixo.

No exemplo de código acima, demonstramos o uso de operadores new e delete. Usamos o operador “novo” para alocar memória para uma variável, arrays e também para inicializar outra variável com um valor. Em seguida, excluímos essas entidades usando o operador delete.
Conclusão
Isso é tudo sobre os novos operadores de exclusão de C ++ no que diz respeito aos tipos de dados padrão. Também podemos usar operadores new e delete para tipos de dados definidos pelo usuário como classes e estruturas.
Aprenderemos mais sobre o uso desses operadores para criar objetos quando aprendermos programação orientada a objetos usando C ++.
=> Dê uma olhada no guia para iniciantes em C ++ aqui.
Leitura recomendada
- Exemplos de operadores booleanos e aritméticos do Unix Shell Script
- MongoDB Atualizar e Excluir Documento com Exemplos
- Operadores C ++, tipos e exemplos
- Operadores Python
- Tutorial Python DateTime com exemplos
- Cortar comando no Unix com exemplos
- Classificação por bolha em C ++ com exemplos
- Sintaxe de comando Unix Cat, opções com exemplos
