Gerenciamento Manual de Memória
Você mesmo aloca e desaloca memória no heap.
Se isto não for feito com cuidado, travamentos, bugs, vulnerabilidades de segurança e vazamentos de memória podem ocorrer.
Exemplo em C
Você deve chamar free
em cada ponteiro que alocar com malloc
:
void foo(size_t n) {
int* int_array = malloc(n * sizeof(int));
//
// ... várias linhas de código
//
free(int_array);
}
Memória é vazada se a função retornar mais cedo entre malloc
e free
: o ponteiro é perdido e não podemos liberar a memória. Pior ainda, liberando o ponteiro duas vezes, ou acessando um ponteiro já liberado pode levar a vulnerabilidades de segurança.