Diferenças entre edições de "Vazamento de memória"

59 bytes adicionados ,  14h34min de 30 de abril de 2010
sem resumo de edição
m (Bot: Adicionando: cs:Únik paměti)
'''Memory leak''', ou '''vazamento de memória''', é um fenômeno que ocorre em [[sistema computacional|sistemas computacionais]] quando uma porção de [[Memória (computador)|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 de computadores|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.
<source lang="c">
#include <stdio.h>
#include <stdlib.h>
 
void f(void){
#include <stdio.h>
void* s;
#include <stdlib.h>
s = malloc(50); /* obtém a memória */
return; /* memory leak - ver nota abaixo */
void f(void)
{
void* s;
s = malloc(50); /* obtém a memória */
return; /* memory leak - ver nota abaixo */
/*
* A [[Memória (computador)|memória]] é obtida e disponibilizada em s.
* Após o retorno da [[subrotina|função]], o [[Ponteiro (programaçã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;
}
 
/*
[[Categoria:Depuração]]
* A [[Memória (computador)|memória]] é obtida e disponibilizada em s.
* Após o retorno da [[subrotina|função]], o [[Ponteiro (programaçã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;
}
</source>
 
[[Categoria:Depuração]]
[[ar:تسرب الذاكرة]]
[[cs:Únik paměti]]
19 928

edições