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

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

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

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

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

Примечания

  1. Automatic Reference Counting on iOS | Dr Dobb’s (недоступная ссылка). Дата обращения: 17 сентября 2016. Архивировано 16 августа 2012 года.
  2. https://doc.rust-lang.org/nomicon/meet-safe-and-unsafe.html « Rust. All the core language cares about .. Dereferencing null or dangling pointers»

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.