ごみ (プログラミング)
次のC言語のプログラムにおいて、変数xは宣言だけされていて、値が代入されないまま使用される。このとき、「xには“ごみ”が入っている」という。
xの値の内容は何であるかは保障されず、どんな値が print されるかは定かではない。この例のように単純であれば大きな問題は起きないであろうが(厳密には問題はある。後述する)、例えば何らかの判断条件に使っている値がこのようになっていれば、プログラムの異常な動作の原因の、バグとなる。しかし、ごみの内容は、短い期間に繰り返し実行した場合は同じ値になることが多い。このため、デバッグ時にごみを入れた状態で何度も実行を行っても、同じ動作になり、バグに気がつかないことも多い。一部の言語では、あらかじめなんらかの値で初期化されることが保証される、という仕様とすることで回避したり、初期化も代入もされないまま使用される可能性があればエラーとなる言語もある。また近年の、フロー解析などのような高度なコンパイラ最適化により、バグの可能性を検出できるパターンもあり、警告オプションを付けることで警告を出させることができる場合もある。
例に示したコードでは単に値を見るだけのため問題は少ないが、C言語ではポインタによって、メモリの中のどこかわからない所にメチャメチャな値を書き込むということができてしまう(しばしば「爆撃」と形容される)。