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 .