Tecnología

Inicio

Ventajas y desventajas de punteros

Dependiendo de a quién le pregunte, los punteros son una bendición o una maldición. Punteros proporcionan un mecanismo para acceder y modificar objetos y código en la memoria directamente. Los punteros se utilizan en muchos lenguajes de programación para manipular cadenas de caracteres, el paso de parámetros a las funciones, el manejo de matrices de datos, y la creación de listas enlazadas y otras estructuras de datos complejas. Mientras que los punteros le proporcionan una gran flexibilidad para la gestión de la memoria y la optimización de algoritmos, hay desventajas. Aprender a usar punteros es difícil para muchos programadores, y la depuración de problemas puntero es un reto.

Mejoramiento

Punteros proporcionan una ventaja de rendimiento por lo que le permite acceder a la memoria de la computadora directamente. En un programa de ordenador, la manera más rápida para acceder y modificar un objeto es para acceder directamente a la memoria física donde se almacena ese objeto. Esta técnica se utiliza comúnmente para optimizar los algoritmos que requieren acceso frecuente o repetitivo a grandes cantidades de datos.

Seguridad

Acceso directo a la memoria significa que puede hacer cosas que tal vez no debería hacerlo. Dependiendo del idioma, el compilador y la plataforma informática, se podía memoria de acceso sin querer (o intencionalmente) que no sea el suyo para acceder. Como resultado, se puede sobrescribir la memoria crítica, modificar el código de una aplicación en ejecución, o hacer que la aplicación u otra aplicación que se comporten de forma inesperada o salida. Un error común es ejecutar más allá del final de una matriz, el acceso a la memoria más allá del final del espacio asignado para la matriz.

Gestión de la memoria

La gestión de uso de memoria en una aplicación que utiliza punteros ofrece flexibilidad, pero es también una tarea. Asignar y desasignar la memoria según sea necesario durante el tiempo de ejecución le permite crear objetos de gran tamaño, tales como matrices, de forma rápida e inmediatamente liberar la memoria cuando ya no es necesaria. Sin embargo, también es fácil de crear pérdidas de memoria mediante la reasignación de un puntero sin liberar la memoria que estaba apuntando a la primera. La recolección de basura es su responsabilidad.

Parámetros de funciones

Las funciones pueden devolver un solo valor, pero pueden tener múltiples parámetros. Con la aprobación de punteros a variables como parámetros, una función puede ser utilizada para establecer los valores de esas variables, y los nuevos valores persistirá después se devuelve la función. Ser capaz de establecer el valor de varias variables a la vez con una sola llamada de función es limpio y eficiente. Sin embargo, puede ser un poco confuso para leer porque no se puede saber si las variables pasadas en serán modificados o no con sólo mirar a la llamada de función. Usted tendrá que buscar en la documentación de la función de aprender cómo se comporta la función.

Los punteros de función

Los punteros no son sólo para los objetos en la memoria; También se pueden utilizar para las funciones, permitiendo así una función que se pasa como un parámetro a otra función. Un puntero de función se puede asignar la dirección de uno de una selección de funciones de modo que el puntero actúa como una especie de alias. lenguajes de programación orientados a objetos han eliminado la necesidad de punteros de función con la herencia y polimorfismo.

Confusión puntero

Los punteros son un tema confuso para muchos programadores, en particular aquellos con experiencia en el uso de los idiomas que no cuentan con los punteros y acceso directo a memoria. Sin embargo, la persistencia lleva rápidamente a la maestría de los punteros. Los punteros son a menudo acompañada por la sintaxis oscura. convenciones de denominación de variables consistentes pueden ayudar a su código sea más legible. Por ejemplo, las convenciones de nombres comunes incluyen el uso de "p" o "ptr" como un prefijo a los nombres de variable puntero.

Consejos

Utilice siempre las funciones de asignación proporcionadas por el lenguaje de asignación de memoria, y comprobar para asegurarse de que la memoria se asignaba antes de usarlo. Tenga cuidado con la gestión de memoria, y liberar memoria cuando ya no es necesaria. Si reasigna un puntero a una nueva dirección de memoria, asegúrese de que la vieja memoria se libera o cedido a un puntero diferente. Asegúrese de que los punteros creados en funciones se asignan a la propiedad del alcance padre o que la memoria se cancela la asignación antes de salir de la función.