Na linguagem de programação C, informações endereço da loja ponteiros para posições de memória no computador . Eles também permitem que um programa para permitir que pedir ao computador para a memória (ou " alocar " memória) durante a execução. Porque ponteiros lidar com a memória dinamicamente , eles vêm com certos perigos e desvantagens apesar de sua necessidade. Memória vazamentos
Quando um programa solicita memória através do uso de um ponteiro, esse ponteiro deve continuamente referência a memória alocada . Se a qualquer momento, de uma localização de memória alocada não tem um ponteiro correspondente ( se todos os ponteiros referentes à memória são " apontado " noutro local ) , que a memória não pode ser acedido pelo programa . Esta memória é agora "órfãos ". No entanto, o computador ainda considera essa memória alocada . Como um programa é executado continuamente, e as mesmas linhas de código são executadas milhões de vezes , um erro de alocação de memória por um erro de ponteiro pode preencher rapidamente a memória disponível com os dados inacessíveis , causando um vazamento de memória.
Null ponteiros
ponteiros que não se referem a um endereço na memória são chamados de ponteiros "nulo" . Enquanto eles servem funções úteis na programação (como significando erros de alocação de memória ) , um grande problema ocorre quando " dereferencing " um ponteiro nulo ( dereferencing um ponteiro significa para acessar os dados no local de memória referenciado pelo ponteiro ) . Quando um programa é escrito , há verificações de segurança lidar com a dereferencing de um ponteiro nulo. Na verdade , um grande programa só pode acidentalmente excluir a referência um ponteiro nulo, em algum lugar no fundo de milhões de linhas de código. Quando o código é executado , no entanto, um ponteiro nulo desreferenciado fará com que um programa deixe de funcionar.
Buffer Overflow
A superação de memória ( ou " estouro de buffer " ) ocorre quando a memória alocada por um ponteiro não é grande o suficiente para a entrada que recebe. Por exemplo , se um programa aloca memória para uma palavra sete caracteres e recebe como entrada uma palavra de nove caracteres, os dois personagens extras são armazenadas na memória fora da memória ponteiro de sete caracteres . Os dois personagens extras substituir qualquer coisa contida nele . Não há nenhuma maneira para o programa para saber o que existe nessas duas posições de memória extra. Eles podem conter dados confidenciais do programa (como variáveis do programa ) , ou mesmo para o próprio computador . Isto leva a " corrupção de dados ", como os dados que deveriam ter sido intacta fora da memória alocada está agora comprometida.