Programação  
 
Conhecimento computador >> Programação >> C /C + + programação >> 
O que desvantagens há em desreferenciação implícita de ponteiros
? Ponteiros determinar o tipo de objeto de um programa de software assume está em uma posição de memória específica. Ponteiros podem ser convertidos em números inteiros específicos ou referências implícitas . Ponteiros podem fazer referência a outros ponteiros e matrizes de dados. Dereferencing implícita de ponteiros introduz o risco de erros de software e vulnerabilidades que não ocorrem quando os ponteiros são definidos explicitamente. Explícita Versus ponteiros implícitos
A variável à direita é referenciada implicitamente a equação do lado esquerdo.

Conversões explícitas ponteiro mudar um tipo de ponteiro para outro tipo de ponteiro. Mudando um inteiro ou byte para um ponteiro é também uma conversão explícita . C + + permite a conversão implícita de um tipo de ponteiro do tipo void * . Literais nulos podem ter uma conversão implícita para qualquer tipo de ponteiro . Variáveis ​​no lado direito de uma instrução de atribuição são implicitamente desreferenciado como eles assumem o valor dos valores no lado esquerdo da instrução de atribuição . Todos dereferencing está implícito em Java.
Operadores dereferencing

C + +, ponteiros para os membros da classe devem ser desreferenciado no contexto de um objeto de classe . A * operador. Dereferences um ponteiro para um membro de um objeto de classe . Uma seta seguida de um asterisco dereferences um ponteiro para um membro com um ponteiro para um objeto de classe . Usando o "*" operador de indireção na linguagem de programação C é chamado de referência um ponteiro. Um ponteiro é definido usando a expressão ptr = variável ou valor. Um ponteiro dereferenced é definida utilizando a expressão * ptr = variável ou valor.

Erros

dereferencing um ponteiro pode resultar em valores inválidos se o endereço é referenciado após o fim da sua vida útil. Quando um ponteiro é referência , o programa chama o valor referenciado pelo ponteiro . Ponteiros nulos têm um valor de 0x0 padrão se estático e não inicializado. De acordo com o "Guia para Kernel Exploração " por Enrico Perla, " Se um caminho do kernel tenta excluir a referência um ponteiro NULL, ele vai simplesmente tentar usar o 0x0 endereço de memória , o que provavelmente vai resultar em uma condição de pânico, uma vez que nada é mapeado lá . " o ponteiro deve ser definido com o comando * ptr antes de o ponteiro dereferenced podem ser usados ​​em outros lugares em um programa C .

Se o * ptr não é atribuído um valor antes de ser referenciado, o programa pode falhar. Ponteiros para membros de dados pode resultar em um mau desreferenciava . Se o ponteiro não está olhando para cima os valores de um array de objetos de classe e não pode determinar o valor da variável , ocorrerá um erro . " C + + Gotchas " por Stephen C. Dewhurst afirma que " um ponteiro para membro refere-se a um membro específico de um objeto não especificado . " O objeto referenciado deve ser fornecido , bem como para o ponteiro para funcionar corretamente .
< Br > vulnerabilidades

dereferencing implícita de um ponteiro não inicializado cria uma vulnerabilidade no código do software. Corrupção de memória corrompe um ponteiro que se torna dereferenced . Dereferencing um ponteiro não inicializado faz com que o software para fazer referência a uma posição de memória que não é validado . Sem controlos sobre a origem ou destino do ponteiro dereferenced , os hackers podem usar essa vulnerabilidade para passar um endereço de kernel para o kernel do software e modificar sua memória com os seus próprios valores desejados no lugar dos dados do usuário.
< Br >

Anterior :

Próximo : No
  Os artigos relacionados
·Como fazer um + + Bicho Programa Porteiro C mais expres…
·O que significa isso , se um arquivo de aplicativo já …
·Como escrever um programa C + + computador que calcula …
·Tipos de erros cadeia de formato 
·Funções dinâmicas de chamar DLLs 
·Como limitar a casa decimal em Linguagem C 
·Como transmitir vídeo ao vivo no Xcode 
·Como remover SQLite em C 
·Como criar um projeto Maven no Galileo 
·Como transmitir vídeo em XCode 
  Artigos em destaque
·Como fazer uma pasta em C + + 
·Como ligar a Lista de Fluxo de entrada em C + + 
·Conceitos básicos do computador em Turbo C + + 
·Como editar o Silverlight Datagrid 
·Como fazer um C + + Janela Principal Sem uma barra de t…
·Exibindo uma Imagem Box PGM em C + + 
·Como ler dados em Xcode 
·'C' Programação Android 
·Como Fazer um Asterisk Espaço Padrão em C + + 
·Adicionando um nó TreeView 
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados