Pergunta

Eu tenho visto muitos erros ao longo de minha vida, usando o computador, e muitos deles parecia ser de acesso Exceções Violação de chamada saída para a memória não-legível ou 0x00000000 / 0xFFFFFFFF.

Que tipo de erro de programação provoca isso? é intencional para obter o programa para falhar quando algo dá muito errado?

Foi útil?

Solução

Definitivamente não "intencional para fazer o programa falhar quando as coisas dão muito errado" - eles tinham acabado de chamar seu equivalente linguagem da saída (código_erro) para que ... você não quer saltar aleatoriamente em algum lugar na memória para causa que deixe de funcionar.

Basicamente isso significa que o programa está a tentar ler um fora local de memória do intervalo permitido pelo sistema operacional.

Isto requer algum tipo de conceito ponteiro na língua, e o endereço de memória no ponteiro está se preparando para um valor ruim. Isso pode ser causado por algo como esquecer de definir o valor do ponteiro de ser um endereço de um int ele está apontando para e em vez definindo-o como o valor o int detém. Isto poderia ser por causa de manipulação de dados / input ruim - você faz uma matriz que pode conter 256 bytes - e, em seguida, ler 265 - e isso só acontece que um valor de ponteiro estava no local de memória após a matriz, então agora dados que ' derramado sobre' o fim da matriz está no local de memória onde um ponteiro foi - tão próxima vez que você acessar esse ponteiro - é cheia de alguns dados aleatórios, mas ele é tratado como um endereço de memória. (Fazer isso propositadamente para corte é chamado de 'buffer overflow ataque').

Outras dicas

Dereferencing um ponteiro nulo (um erro muito comum) pode causar este em alguns idiomas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top