Vazamento de memória: diferenças entre revisões
Conteúdo apagado Conteúdo adicionado
m Memory leak movido para Vazamento de memória sob redirecionamento |
m Bot: Modificando: es:Fuga de memoria |
||
Linha 36: | Linha 36: | ||
[[de:Speicherleck]] |
[[de:Speicherleck]] |
||
[[en:Memory leak]] |
[[en:Memory leak]] |
||
[[es:Fuga de memoria |
[[es:Fuga de memoria]] |
||
[[fi:Muistivuoto]] |
[[fi:Muistivuoto]] |
||
[[fr:Fuite de mémoire]] |
[[fr:Fuite de mémoire]] |
Revisão das 10h53min de 17 de setembro de 2007
Memory leak, ou vazamento de memória, é um fenômeno que ocorre em sistemas computacionais quando uma porção de memória, alocada para uma determinada operação, não é liberada quando não é mais necessária. A ocorrência de vazamentos de memória é quase sempre relacionada a erros de programação e pode levar a falhas no sistema se a memória for completamente consumida.
Exemplo
O exemplo abaixo, escrito na linguagem de programação C, mostra um programa de computador que possui um vazamento de memória. Após algum tempo de execução este programa irá consumir toda a memória disponível e irá falhar.
#include <stdio.h> #include <stdlib.h> void f(void) { void* s; s = malloc(50); /* obtém a memória */ return; /* memory leak - ver nota abaixo */ /* * A memória é obtida e disponibilizada em s. * Após o retorno da função, o ponteiro é destruído e * perde-se a referência a esta porção de memória. * * Este código pode ser consertado se a função f() incluir * a operação "free(s)" antes do retorno ou se o código * que chama f() fizer a chamada para a operação free(). */ } int main(void) { /* Este loop infinito chama a função f(), definida acima */ while (1) f(); /* Cedo ou tarde a chamada à função irá falhar, devido à um um erro de alocação na função malloc, quando a memória terminar.*/ return 0; }