【ダングリングポインタ】
ダングリングポインタ とは?
💡 引っ越した友達の家に手紙を送り続ける、迷子の宛先
📌 このページのポイント
ダングリングポインタって怖そうな名前だけど、どういうものなの?
たとえば、友達が引っ越したのに古い住所のまま手紙を送り続けるようなものだよ。メモリ上のデータが解放されたのに、ポインタだけがその場所を指し続けている状態のことだね。
それってアクセスしたらどうなるの?
何が起きるか分からないんだ。たまたま同じ場所に別のデータが入っていたら、見知らぬ人の手紙を読んでしまうようなもの。プログラムがクラッシュしたり、データが壊れたり、最悪の場合は攻撃者に悪用されるよ。
攻撃に悪用されるってどういうこと?
C言語ではどうやって防ぐの?
基本的なテクニックとしては、メモリを解放した直後にポインタをNULLに設定する方法があるよ。NULLアクセスならクラッシュするから、少なくとも「気づかず壊れたデータを使い続ける」事態は防げるんだ。
それって手動でやるの?忘れちゃいそう...
Rustってすごいんだね!他の言語はどうしているの?
まとめ:ざっくりこれだけ覚えればOK!
「ダングリングポインタ」って出てきたら「解放済みメモリを指しっぱなしの危険なポインタ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Dangling Pointer」 = 宙ぶらりんのポインタ
💬 「dangling(ぶら下がっている・宙ぶらりんの)」が語源で、行き先を失ってブラブラしている状態を表しているよ