freeCodeCamp/guide/portuguese/cplusplus/dynamic-memory-allocation/index.md

40 lines
2.7 KiB
Markdown
Raw Normal View History

---
title: Dynamic Memory Allocation
localeTitle: Alocação Dinâmica de Memória
---
## Alocação de Memória Dinâmica em C ++
### O que é alocação dinâmica de memória em C ++?
* **Alocação de memória** em C ++ refere-se à memória alocada para as variáveis que você usa em todo o seu programa.
* **Alocação de Memória Dinâmica** é a memória que é atribuída às variáveis no tempo de execução e a quantidade de memória requerida também é decidida no tempo de execução.
* Essa memória vem do **heap** , enquanto variáveis _não estáticas_ e variáveis _locais_ obtêm memória da **pilha** .
* Em C ++, o programador pode executar alocações de memória manualmente e é chamado como **_alocação de memória dinâmica_** .
* Era possível em C fazer alocação de memória dinâmica, usando _funções calloc_ e _malloc_ para alocar memória e usar função _livre_ para desalocar a memória dinâmica.
* Em C ++, além de acima, há duas funções, _new_ e _delete_ para executar alocação de memória dinâmica e desalocação.
### NOVO operador
* `new` operador pode conceder a memória do programador do heap (se disponível). Se a memória solicitada pelo programador estiver disponível, o `new` operador inicializa a memória e retorna o endereço (referência) da memória alocada.
* **Sintaxe**
`pointer-variable-type` = **novo** `data-type;`
Exemplo 1: `int *ptr` = **new** `int;`
Exemplo 2: `int *ptr2` = **new** `int[10];`
Aqui, `pointer-variable-type` é um **ponteiro** de `data type` de `data type` . O `data-type` pode ser int, char, etc. ou tipo de dados definido pelo usuário.
### Operador DELETE
* É responsabilidade do programador des-alocar a memória alocada dinamicamente, caso contrário a memória não estará disponível para ser reatribuída até o final do programa.
* Para desalocar a memória, o operador `delete` está disponível e pode ser usado pelo programador.
* **Sintaxe**
**delete** `pointer-type-variable;`
Por exemplo, para liberar a memória alocada no exemplo 1 acima, nós digitamos:
`delete ptr;`
Da mesma forma, por exemplo 2, a memória pode ser liberada por:
`delete ptr2` ;
### Perdas de memória
Os vazamentos são causados quando você não consegue desalocar a memória dinâmica alocada por meio do operador `New` no final do programa. Se você não desalocá-lo com o operador Excluir, seu computador continuará criando nova memória no heap toda vez que o programa for executado. Isso faz com que o computador fique lento porque a memória não é excluída e a memória disponível diminui.