Висячий указатель

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Dangling Pointer.pdf

Висячий указатель или висячая ссылка (англ. Dangling pointer, wild pointer, dangling reference) — указатель, не ссылающийся на допустимый объект соответствующего типа. Это особый случай нарушения безопасности памяти.

Висячие указатели возникают тогда, когда объект удалён или перемещён без изменения значения указателя на нулевое, так что указатель все ещё указывает на область памяти, где ранее хранились данные. Поскольку система может перераспределить ранее освобождённую память (в том числе в другой процесс), то оборванный указатель может привести к непредсказуемому поведению программы. В случае, когда программа записывает данные в память, используя такой указатель, данные могут незаметно разрушаться, что приводит к тонким ошибкам, которые очень трудно найти.

Этот вид ошибок очень опасен, и наряду с утечками памяти случается довольно часто.

Ряд языков снижают вероятность появления висячих указателей, в частности, используя автоматическую сборку мусора[1] или иными методами[2], повышая безопасность доступа к памяти.

Примечания[править | править вики-текст]

  1. Automatic Reference Counting on iOS | Dr Dobb’s
  2. https://doc.rust-lang.org/nomicon/meet-safe-and-unsafe.html « Rust. All the core language cares about .. Dereferencing null or dangling pointers»

Ссылки[править | править вики-текст]