Замки и ключи - это решение проблемы висящих указателей в языках программирования .
Подход с замками и ключами представляет указатели в виде упорядоченных пар (ключ, адрес), где ключ является целочисленным значением. Динамические переменные кучи представлены как хранилище для переменной плюс ячейка для целочисленного значения блокировки. Когда переменная выделяется, создается значение блокировки, которое помещается как в ячейку переменной, так и в ячейку ключа указателя. Каждый доступ к указателю сравнивает эти два значения, и доступ разрешен только в том случае, если значения совпадают.
Когда переменная освобождается, ключ ее указателя изменяется для хранения значения, отличного от ячейки переменной. С этого момента любая попытка разыменования указателя может быть помечена как ошибка. Поскольку копирование указателя также копирует значение его ячейки, изменение ключа упорядоченной пары безопасно отключает все копии указателя. [1]