Um vazamento de memória é quando um programa faz com que o consumo de um incremento , mas constante de memória, fazendo com que o programa para usar mais memória do que ele precisa. Na melhor das hipóteses o programa vai simplesmente usar mais memória e retardar o computador. Casos extremos usará memória suficiente para fazer com que outros programas a falhar devido à falta de memória disponível, o pior cenário que irá travar o seu sistema operacional. Em C + +, vazamentos de memória pode ser causada por vários erros diferentes na codificação . A seguir irá mostrar-lhe como verificar para ver se o programa tiver um vazamento de memória e onde encontrá-lo . Instruções
1
Descubra se o seu programa tem um vazamento de memória. Execute o programa através do depurador digitando:
' _CrtDumpMemoryLeaks ()'
A primeira linha de código irá ler " vazamentos de memória detectada! " Se não, então o programa não tem um vazamento de memória.
2
Rastrear a localização do vazamento de memória. A terceira linha de
' _CrtDumpMemoryLeaks () ' em
usado com a declaração:
' # define _CRTDBG_MAP_ALLOC ' em
irá dizer-lhe o nome do arquivo onde a memória vazada foi alocado. Você também pode usar MFC para acompanhar as alocações de memória . No MFC a macro: .
' DEBUG_NEW ' em
pode ser usado para rastrear vazamentos de memória
3
Vá para o arquivo indicado. A má codificação terá que ser localizado. Existem várias causas de um vazamento de memória ; uso errado de novo /apagar , uma exclusão equivocada , "perdido" ponteiros ou um ponteiro sai do escopo . Verifique as linhas de código onde a memória é alocada e corrigir quaisquer problemas . Verifique se a memória alocada em um loop é liberado em cada iteração. Certifique-se de ponteiros não pode ir fora do escopo antes que a memória é liberada. Verifique também se os códigos:
' malloc ' /' livre ' em
'novo' /' apagar ' em
' new [] ' /delete [ ] '< br >
são usados corretamente
4
Execute o programa através do depurador novamente, digitando : .
' _CrtDumpMemoryLeaks () ' em
para ver se o problema ainda ocorre.