2.7 KiB
title | localeTitle |
---|---|
Dynamic Memory Allocation | 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, onew
operador inicializa a memória e retorna o endereço (referência) da memória alocada.- Sintaxe
pointer-variable-type
= novodata-type;
Exemplo 1:int *ptr
= newint;
Exemplo 2:int *ptr2
= newint[10];
Aqui,pointer-variable-type
é um ponteiro dedata type
dedata type
. Odata-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
deletepointer-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.