Programação  
 
Conhecimento computador >> Programação >> C /C + + programação >> 
Descrição de uma função C + + e como ele causa um estouro de buffer
Buffer overflow em C + + é causada por algumas questões diferentes. Muitas vezes , ocorre como parte da operação de uma função pretendia escrever para uma matriz ou acessar a memória profunda. Normalmente, ocorre estouro de buffer , quando introduz dados que um usuário ou programador além do alcance de uma variável ou uma matriz . Funções que tentam ir além desta faixa também pode tentar apagar os dados no sistema, ou redirecionar o sistema , apagando ou substituindo informações. Funções em C + +

Funções em C e C + + se comporta como esperado, em comparação com outras linguagens de programação. Existem funções , como qualquer outra informação variável ou sistema, na memória e são referenciados por endereço . Funções , por si só, são apenas blocos de código na memória que são referenciados . Qualquer erro lançada por uma referência de função pode ser devido a uma função não declarado , ou uma função chamada incorretamente. Um erro de buffer overflow seria mais provável que venha a partir do código dentro da função .

Variáveis ​​e Memória

C + + é de tipagem estática , o que significa que o programador deve especificar um tipo de variável ao declarar uma variável. Isto é porque C + + anular blocos de memória de determinados tamanhos com base no tipo variável . Uma variável inteira (int ) declarou em um programa vai ter um espaço na memória reservado especificamente para um int . O bloco de memória será o tamanho exato de um inteiro.

Matrizes

Arrays são conjuntos de variáveis ​​contidas em um nome. Por exemplo , a matriz abaixo cria uma lista de 10 números inteiros , que podem ser acessados ​​por referência a um índice ( nome [0] , nome [1] , etc )

int nome [10];

em vez de um número inteiro , a matriz deixa de lado o espaço contínuo suficiente para 10. No entanto, porque o acesso índice da matriz pode ser tentada em valores para além do que está contido no array ( nome [11] , por exemplo) , podem ocorrer erros se o programador não ver como ela usa a matriz .

buffer Overflow

por causa da natureza de matrizes em C + + , uma matriz dentro de uma função pode ser vítima de estouros de buffer. Se um usuário insere uma entrada de caracteres maior do que a matriz pode suportar, os caracteres extras irá substituir os dados adjacentes à matriz na memória. Por exemplo,

exemplo void ( ) { int

de login [15];

int i = 0;

while ( cin >> a [i ] ) {

i + +; }


}

o loop "while" nunca vai acabar , e pelo tempo "i" chega a 15 , o usuário começará a introdução de dados que substitui memória. Isto pode ter consequências inesperadas , como mudança de uma variável local , ou, em circunstâncias específicas , regravação de ponteiros de função de referência diferente, o código malicioso .

Anterior :

Próximo : No
  Os artigos relacionados
·Como criar um Applet & C + + 
·Como usar cordas como a entrada do teclado em arrays bi…
·Como converter letras em números em uma tabela de Cord…
·Como fazer uma função de fila no Syntax C 
·O que é WinAC & Kernel Mode 
·Como fazer um gráfico em movimento em C # 
·Como criar um vetor de strings em C + + 
·Funções Iomanip 
·Como usar Ctags Com UltraStudio 
·Como adicionar um interruptor para um Silverlight App 
  Artigos em destaque
·O que é um destrutor virtual em C 
·Como avaliar booleano Multiplicação em C + + 
·Um tutorial sobre Alertas iPhone SDK 
·Como fazer Volumétrica Fog em Open GL 
·Como usar Arrays fazer Matrizes em C + + 
·Como Chegar Copy & Paste no Windows Phone 7 para desenv…
·String de conexão para o SQL Authentication 
·Substrings comuns em C 
·Como fazer Int Parte C + + Cordas 
·O que fazer com um erro de Trapped in C 
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados