En programación, si una estructura en el heap (lugar de donde se asigna memoria) es destruida antes de que todas las referencias (los apuntadores) a la misma sean destruidas, cualquier referencia restante se llama referencia colgante (Dangling Reference).

Lenguajes como C detectan en tiempo de ejecución estas referencias y anuncian un error.

Existen métodos para detectar estas referencias implementando un contador de referencias o un trazador de alcance en los lenguajes de programación que usan recolectores de basura.

Ejemplo

editar
#include <stdlib.h>
{
    char *cp = malloc ( A_CONST );  /* cp apunta al espacio reservado en el heap A_CONST */
    /*... */
    free ( cp );      /* libero el espacio reservado, ahora cp es una referencia colgante */
    cp = NULL;        /* cp deja de ser una referencia colgante, puesto que ya no apunta a ningún sitio */
    /*... */
}

Enlaces externos

editar

📚 Artikel Terkait di Wikipedia

Condiciones Yoda

myString= null; if (myString.equals("foobar")) {/* ... */ } // Esto provoca una NullPointerException en Java Con condiciones de Yoda: String myString= null; if

Puntero (informática)

Check for a null object pointer */ if (item == NULL) return; /* Desasignar la cadena de nombre guardado en el Item */ if (item->name != NULL) { free(item->name);

Puntero opaco

*o, int i) { if (o == NULL) return -1; o->id = i; return 0; } int obj_getid(struct obj *o, int *i) { if (o == NULL || i == NULL) return -1; *i = o->id;

Curva de Sierpinski

} public void paint(Graphics g) { if (g == null) throw new NullPointerException(); if (offscrBuf == null) { offscrBuf = createImage(this.getWidth(),

Lista enlazada

nodo anterior, o apunta al valor NULL si es el primer nodo; y otro que apunta al nodo siguiente, o apunta al valor NULL si es el último nodo. En algún lenguaje

Buffer circular

que->readPointer) && (que->writePointer % que->size == que->readPointer); } inline int CircularBufferIsEmpty(CircularBuffer* que) { return ((que->readPointer ==

C++17

implementarse así: template<typename F, std::enable_if_t<!std::is_member_pointer<std::decay_t<F>>{}, int> = 0> auto deref_fn(F&& f) { return [f](auto&&

C++11

2431: SC22/WG21/N2431 = J16/07-0301 (2 October 2007), A name for the null pointer: nullptr Doc No. 2432: ISO/IEC DTR 19768 (23 October 2007) State of C++