プログラムが、不正なメモリの書き換えやメモリ操作を行なうこと。ここで言う破壊とは、物理的な破壊ではなく、論理的な破壊を指す。
プログラムの内容により、その症状は異なる。
軽度では隣接したデータエリアの内容を破壊することでプログラムが異常動作する程度だが、データエリアを超えてプログラムコードそのものを書き換えてしまったり、自分のプログラムに割り当てられたメモリの外まで書き換えてしまうなどまでいくと、システムとして致命傷ともなりうる。
このため、UNIXや32ビットWindowsなど、メモリ保護機能を持つマルチタスクOSではプログラム割り当て外のメモリ破壊を検知し、それを行なったプログラムをシステムが強制終了することができる。
この時、UNIXでは「Segmentation fault」、Windowsでは各種の例外エラーとして通知される。
高等テクニックとして、プログラムコードを実行中に書き換える事でプログラムの流れを制御したりする手法が、特にメモリの少なかった初期(8ビットマイクロプロセッサの時代)のコンピュータ向けに一部で使われた。
しかしこれは、プログラムの可読性が極端に悪くなる上、マルチタスクやメモリ保護の環境に対応しにくく、実行環境に依存して移植性が悪くなるなどの理由により、現在では御法度の技とされている。
ただし、自己進化型のプログラムなど特定の目的のために、研究機関などでは今でもこれに近い技術が使われている場合もある。