プログラムのバグにより、本来書き換えるべきでないメモリ領域の一部分を書き換えてしまうことです。
「メモリ破壊」という言葉の印象と違って、メモリというコンピュータ部品が物理的に壊れることではなく、メモリに記録されているデータを誤って上書きすることによって、データが壊れてしまう(正しいデータを失ってしまう)ことを意味しています。たとえば、バッファオーバーフローやスタックオーバーフロー、二重解放、ワイルドポインタの使用、アドレス計算のミスといったバグによって引き起こされます。
プログラムは、メモリ上にデータを記録し、参照しながら実行を進めるため、データがいつの間にか書き換えられてしまっていると、その後の正常な動作に何かしらの影響を与えると思われます。どこがどのように書き換えられたかによって、その後に起こる現象は異なるものになるため、メモリ破壊に気付くことすら困難なケースもあります(偶然にも、元のデータと同じデータで上書きするメモリ破壊もあり得ます)。すぐに実行時エラーや例外などで異常終了するかもしれませんが、正しくないデータに書き換えられたまま、一見して正常な動作を続けてしまう可能性もあります。動作が止まらなければ問題ないということではないことに注意しなければなりません。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |