Locks-and-keys es una solución para punteros colgantes en lenguajes de programación de computadoras .
El enfoque de candados y claves representa punteros como pares ordenados (clave, dirección) donde la clave es un valor entero. Las variables dinámicas de montón se representan como el almacenamiento de la variable más una celda para un valor de bloqueo de número entero. Cuando se asigna una variable, se crea un valor de bloqueo y se coloca tanto en la celda de la variable como en la celda clave del puntero. Cada acceso al puntero compara estos dos valores, y el acceso solo se permite si los valores coinciden.
Cuando se desasigna una variable, la clave de su puntero se modifica para contener un valor diferente al de la celda de la variable. A partir de ese momento, cualquier intento de eliminar la referencia al puntero se puede marcar como un error. Dado que copiar un puntero también copia su valor de celda, cambiar la clave del par ordenado deshabilita de forma segura todas las copias del puntero. [1]