Vazamento de memória: diferenças entre revisões
Conteúdo apagado Conteúdo adicionado
m r2.7.2+) (Robô: A adicionar: uk:Витік пам'яті |
|||
Linha 32: | Linha 32: | ||
[[Categoria:Depuração]] |
[[Categoria:Depuração]] |
||
[[ar:تسرب الذاكرة]] |
|||
[[cs:Únik paměti]] |
|||
[[de:Speicherleck]] |
|||
[[en:Memory leak]] |
|||
[[es:Fuga de memoria]] |
|||
[[fa:کمبود حافظه]] |
|||
[[fi:Muistivuoto]] |
|||
[[fr:Fuite de mémoire]] |
|||
[[he:דליפת זיכרון]] |
|||
[[id:Kebocoran Memori]] |
|||
[[it:Memory leak]] |
|||
[[ja:メモリリーク]] |
|||
[[ko:메모리 누수]] |
|||
[[lt:Atminties nutekėjimas]] |
|||
[[ms:Bocor ingatan]] |
|||
[[nl:Geheugenlek]] |
|||
[[pl:Wyciek pamięci]] |
|||
[[ru:Утечка памяти]] |
|||
[[sk:Memory leak]] |
|||
[[tr:Bellek sızıntısı]] |
|||
[[uk:Витік пам'яті]] |
|||
[[zh:内存泄漏]] |
|||
[[zh-yue:漏記憶]] |
Revisão das 03h29min de 28 de março de 2013
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 (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;
}