Висячі вказівники

Завислі вказівники, дикі вказівники (англ. dangling pointers, wild pointers) у програмуваннівказівники, що не вказують на допустимий об'єкт відповідного типу. Це спеціальні випадки порушення безпеки пам'яті.

Завислі вказівники виникають тоді, коли об'єкт видалено або переміщено без зміни значення вказівника на нульове, так що вказівник все ще вказує на область пам'яті непереміщених даних. Оскільки система може перерозподілити раніше звільнену пам'ять (у тому числі в інший процес), то обірваний вказівник може призвести до непередбачуваної поведінки програми. У випадку, коли програма записує дані у пам'ять, використовуючи такий вказівник, дані можуть непомітно руйнуватися, що призводить до тонких помилок, які надзвичайно важко знайти.

Дикі вказівники виникають, коли вказівник використовується до ініціалізації у відомий стан, що можливо в деяких мовах програмування. Вони такі ж непередбачувані як висячі, проте вони мають менше шансів залишитися непоміченими.

Цей вид помилок є дуже небезпечним і поруч з витоками пам'яті трапляється досить часто.

Ряд мов програмування знижують вірогідність появи висячих вказівників, використовуючи автоматичне збирання сміття[1] та інші методи[2], цим самим підвищуючи безпеку доступу до пам'яті.

Посилання

Примітки

  1. Automatic Reference Counting on iOS | Dr Dobb’s. Архів оригіналу за 16 серпня 2012. Процитовано 30 квітня 2018.
  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.