Puntero colgante

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 5 de septiembre de 2019; las comprobaciones requieren 3 ediciones .

Un puntero colgante o referencia colgante ( es decir , puntero colgante,  puntero salvaje , referencia colgante ) es un puntero que no apunta a un objeto válido del tipo correspondiente. Este es un caso especial de una violación de seguridad de la memoria.

Los punteros colgantes ocurren cuando un objeto se elimina o se mueve sin cambiar el valor del puntero a nulo, de modo que el puntero todavía apunta a la ubicación de la memoria donde se almacenaron los datos previamente. Dado que el sistema puede reasignar la memoria previamente liberada (incluso a otro proceso), un puntero roto puede provocar un comportamiento impredecible del programa. Cuando un programa escribe datos en la memoria utilizando un puntero de este tipo, los datos pueden corromperse silenciosamente, lo que genera errores sutiles que son muy difíciles de encontrar.

Este tipo de error es muy peligroso y, junto con las fugas de memoria, ocurre con bastante frecuencia.

Varios idiomas reducen la posibilidad de punteros colgantes, en particular mediante el uso de la recolección automática de elementos no utilizados [1] u otros métodos [2] para mejorar la seguridad de acceso a la memoria .

Notas

  1. Recuento automático de referencias en iOS | Dr. Dobb's (enlace no disponible) . Consultado el 17 de septiembre de 2016. Archivado desde el original el 16 de agosto de 2012. 
  2. https://doc.rust-lang.org/nomicon/meet-safe-and-unsafe.html Archivado el 30 de abril de 2018 en Wayback Machine "Rust. Todo el lenguaje central se preocupa por... Desreferenciar punteros nulos o colgantes»

Enlaces