Tombstone (программирование) - Tombstone (programming)

Надгробия это механизм для обнаружения висячие указатели что может появиться на определенном компьютере языки программирования, е. грамм. C, C ++ и языки ассемблера, и действовать как сдерживание их опасного воздействия.

Надгробие - это структура, которая действует как посредник между указатель и динамический данные в объем памяти. Указатель - иногда его называют ручка - указывает только на надгробные плиты и никогда на память, в которой хранится фактическое значение. Когда данные удаляются, надгробие устанавливается на ноль (или, в более общем смысле, к значению, которое является недопустимым для указателя в данной среде выполнения), что указывает на то, что переменная больше не существует. Это предотвращает использование недействительных указателей, которые иначе могли бы получить доступ к области памяти, которая когда-то принадлежала теперь освобожденной переменной, хотя она может уже содержать другие данные, что, в свою очередь, приведет к повреждению данных в памяти. В зависимости от Операционная система, то ЦПУ может автоматически обнаруживать такой недопустимый доступ (например, для нулевого значения: a ошибка разыменования нулевого указателя). Это помогает при анализе фактической причины ошибки программирования в отладка, и его также можно использовать для прерывания программы в производственном использовании, чтобы предотвратить ее продолжение с недопустимыми структурами данных.

В более общем виде надгробие можно понимать как маркер «этих данных больше нет». Например, в файловые системы при удалении файлов может оказаться эффективным пометить их как «мертвые» вместо немедленного восстановления всех их блоков данных.

К недостаткам использования надгробий можно отнести вычислительные накладные расходы и дополнительное потребление памяти: необходима дополнительная обработка, чтобы проследить путь от указателя к данным через надгробие, а дополнительная память необходима для хранения надгробных камней для каждого указателя во всей программе. Еще одна проблема заключается в том, что весь код, который должен работать с указателями, о которых идет речь, должен быть реализован для использования механизма захоронения.

В настоящее время ни один из популярных языков программирования не использует надгробные плиты. Однако для их использования не требуется встроенная поддержка языком программирования или компилятором.

Смотрите также