dangling pointer
ダングリングポインタ
名詞
複数形: dangling pointers
dangling pointerは、メモリ管理が手動で行われるプログラミング言語において非常に危険な状態を指します。本来、メモリ領域が解放された後はその場所を指すポインタを無効化すべきですが、これを怠るとポインタが宙ぶらりんな状態になり、既に解放されたメモリ領域にアクセスしようとしてしまいます。
メモリ管理におけるリスク
この状態のままメモリにアクセスすると、予測不能な動作が発生します。具体的には、以下のような問題が起こり得ます。
プログラムが突然異常終了(クラッシュ)する。
別のデータが書き込まれた領域を読み書きしてしまい、データの破損やセキュリティ上の脆弱性を招く。
運良く動作し続けてしまうため、バグの発見が遅れ、デバッグが極めて困難になる。
メモリリークとの違い
混同されやすい概念に memory leak(メモリリーク)がありますが、これらは正反対の現象です。memory leakは、不要になったメモリを解放し忘れたためにメモリ消費量が増え続ける状態を指します。一方で dangling pointerは、メモリを解放した後にその参照を保持し続けている状態を指します。
前者が使い終わったのに捨てないことであるのに対し、後者は捨てたはずのものをまだ持っているという違いがあります。
意味
名詞ダングリングポインタ
コンピュータープログラミングにおいて、指し示していたメモリ領域が解放または割り当て解除された後も、引き続きそのメモリ番地を参照し続けているポインタのこと
The program crashed because it attempted to dereference a dangling pointer.
ダングリングポインタを参照しようとしたため、プログラムがクラッシュした。
関連語
pointermemoryaddressallocationdeallocationheapstacksegmentation faultcrashbugleakmemory leakreferencedereferencegarbage collectionfreenewdeletevariablescopelifetimebuffer overflowcorruptionC++Rustcompilerruntimedebuggerpointer arithmeticvirtual memorypagingsegmentationoffsethandledescriptorownershipborrowingsanitizeroverflowunderflowbit flipendiannessbyteabstractionencapsulationobjectinstanceconstructordestructorARC