“Conocimiento Programación>C /C + + Programming

Descripción de un C + + Función y cómo provoca un desbordamiento de búfer

2012/9/18
Desbordamiento de búfer en C + + es causada por algunos problemas diferentes . A menudo , se produce como parte de la operación de una función destinada a escribir en una matriz o acceder a la memoria profunda . Por lo general, se produce desbordamiento de búfer cuando el usuario o el programador introduce datos más allá del alcance de una variable o una matriz. Funciones que intentan ir más allá de este rango también pueden tratar de borrar los datos en el sistema, o redirigir el sistema mediante la eliminación o sobreescritura de la información . Las funciones en C + +

Funciones en C y C + + se comportan como se espera , en comparación con otros lenguajes de programación . Existen funciones , como cualquier otra variable o sistema de información, en la memoria y se hace referencia a la dirección . Funciones , por sí mismos , son bloques de código en la memoria que se hace referencia . Cualquier error que se produce por una referencia de función puede ser debido a una función no declarada , o una función llamada incorrectamente . Un error de desbordamiento de memoria intermedia sería más probable que vienen con el código dentro de la función .
Variables y Memoria

C + + es de tipo estático , lo que significa que el programador debe especificar el tipo de variable al declarar una variable. Esto es debido a que C + + hace a un lado los bloques de memoria de ciertos tamaños basado en el tipo de variable . Una variable de tipo entero (int ) declaró en un programa obtendrá un espacio de memoria reservada específicamente para un int. El bloque de memoria será el tamaño exacto de un número entero .

Matrices

matrices son conjuntos de variables contenidas en un solo nombre. Por ejemplo , la matriz a continuación se crea una lista de 10 números enteros , que se puede acceder mediante una referencia a un índice ( nombre [ 0 ] , nombre [ 1 ] , etc )

int nombre [ 10 ] ;

en lugar de un número entero , la matriz deja de lado suficiente espacio continuo para 10 . Sin embargo , ya que el acceso de índice de matriz se puede intentar en los valores más allá de lo que está contenido en el array ( nombre [ 11 ] , por ejemplo) , los errores pueden ocurrir si el programador no ver cómo se utiliza la matriz.

desbordamiento de Buffer

Debido a la naturaleza de las matrices en C + + , una matriz dentro de una función puede ser víctima de desbordamientos de búfer . Si un usuario introduce una entrada de caracteres más grandes que la matriz puede manejar , los caracteres adicionales se sobreponen a los datos adyacentes a la matriz en la memoria . Por ejemplo ,

ejemplo void ( ) { int

sesión [ 15 ] ;

int i = 0 ;

while ( cin >> a [i ] ) {

i + + ; }


}

el bucle "while" nunca va a terminar , y por el momento " i" llega a 15 , el usuario comenzará a introducir los datos que sobrescribe la memoria. Esto puede tener consecuencias no deseadas , como la reasignación de una variable local o , en determinadas circunstancias, la reescritura de punteros de función para hacer referencia diferente , el código malicioso .

C /C + + Programming
Cómo escribir código para el iPhone
Cómo utilizar casillas de MFC
Cómo compilar C + + en Prompt
Cómo utilizar la función memcmp en C + +
Cómo convertir un número a un personaje usando C + +
Longitud de la secuencia Sin Construido en la función en C + +
Cómo escribir su propio programa Game
Cómo asignar una matriz 2D Uso Malloc
Conocimiento de la computadora © http://www.ordenador.online