ダングリングポインタ
ダングリングポインタ(dangling pointer)
直訳すると宙に浮いたポインタ?
本来有効だったメモリ領域が解放処理などによって無効化されたにもかかわらず、そのメモリ領域を参照し続けているポインタのこと
解放済みだったり、他のことに使われているメモリ領域を参照するポインタ
ワイルドポインタ(wild pointer)とも呼ばれる
code:memo.c
int *pointer = malloc(8); // メモリ確保
free(pointer); // メモリ解放
pointer; // ダングリングポインタ
free(pointer); // ダングリングポインタへの二重解放はクラッシュ(危険)
pointer = NULL; // ダングリングポインタの影響を回避
free(pointer); // 空ポインタへの二重解放は無効化(安全)
*pointer = 99; // 空ポインタへの操作はクラッシュ(セキュリティリスクの回避)
確認用
Q. ダングリングポインタ
無効な[]1や、他のことに使われている[]1を指すポインタ
参考