Las desventajas de punteros en C

by admin

Las desventajas de punteros en C

En el lenguaje de programación C, almacenar punteros de información de la dirección de las posiciones de memoria en el equipo. También permiten que un programa para permitir que pedirle a la computadora para la memoria (o "asignar" memoria) durante la ejecución. Debido a que los punteros se ocupan de la memoria dinámica, vienen con ciertos peligros e inconvenientes a pesar de su necesidad.

Pérdidas de memoria

Cuando un programa solicita la memoria mediante el uso de un puntero, que puntero debe hacer referencia continuamente la memoria asignada. Si en cualquier momento de una ubicación de memoria asignada no tiene un puntero correspondiente (si todos los punteros se hace referencia a la memoria son "señalado" en otra parte), que la memoria se puede acceder ya no por el programa. Esta memoria está "huérfano". Sin embargo, el equipo aún considera esta memoria asignada. Como programa funciona de forma continua, y las mismas líneas de código se ejecutan millones de veces, un error en la asignación de memoria por un error de puntero puede llenar rápidamente la memoria disponible con los datos inaccesibles, provocando una pérdida de memoria.

Los punteros nulos

Los punteros que no se refieren a una dirección en la memoria se llaman punteros "nulo". Mientras que sirven funciones útiles en la programación (como que significan los errores de asignación de memoria), un importante problema se produce cuando "eliminación de referencias a" un puntero nulo (eliminación de referencias a un puntero significa acceder a los datos en la ubicación de memoria al que hace referencia el puntero). Cuando se escribe un programa, no hay controles de seguridad manejan la desreferencia de un puntero nulo. De hecho, un gran programa sólo puede accidentalmente referencia a un puntero nulo, en algún lugar profundo en millones de líneas de código. Cuando se ejecuta el código, sin embargo, un puntero nulo dereferenced hará que un programa se bloquee.

Desbordamiento de búfer

Una memoria de desbordamiento (o "desbordamiento de búfer") se produce cuando la memoria asignada por un puntero no es lo suficientemente grande para la entrada que recibe. Por ejemplo, si un programa asigna memoria para una palabra de siete caracteres de longitud y recibe como entrada una palabra de nueve caracteres de longitud, los dos caracteres adicionales se almacenan en la memoria fuera de la memoria del puntero de siete caracteres. Los dos caracteres adicionales sobreescribir cualquier cosa contenida en el mismo. No hay manera para que el programa sepa lo que existe en esos dos lugares de memoria adicionales. Podrían contener datos sensibles para el programa (como las variables del programa), o incluso para el propio ordenador. Esto conduce a la "corrupción de los datos", ya que los datos que debería haber sido intacto fuera de la memoria asignada está ahora comprometida.

ETIQUETA: