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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Dangling Pointer.pdf

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

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

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

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

Ряд мов програмування знижують вірогідність появи висячих вказівників, використовуючи автоматичне збирання сміття[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»