ここでゼロ除算の脆弱性(Divide By Zero)について「わかりやすく」説明してみたいのですが、はたしてうまく説明できるでしょうか・・・
まずゼロ除算ってなんやというところです。
これを読んでいるオジサンたちは、算数の時間に
Nx0=0
そして、
N÷0=0
と習った人もいるんじゃないでしょうか。
数学の世界だと「=」って「等号」って言いますよね。
=の右側と左側は一緒(等しい)ですよって意味になります。
で、たとえばですね
6x3=18 という式があるとして、
6=18÷3 と置き換えたりできるっていうの習いましたよね?
3=18÷6 でもいいです。
割り算だと
6÷3=2
2x3=6
って習います。
それじゃあこの
N÷0=0
で同じことをやってみたいんですけど
当てはめてみると
N=0x0
0=Nx0
えっこれってN=はかならず0じゃん
ってなりますよね
現在の数学だとこれは「未定義」と習います。
なにかをゼロで割ることは「できない」が正解なのですね。
で、コンピュータというのは計算機ですから、出来ないことをやれって言われると停止することがあるわけです
もちろんプログラミングのなかでそのようなことが発生しないようにしてはいるのですが、
試しにいまお持ちのスマホの電卓で6÷0を計算させてみてください。きちんと作ってあるおかげで「ゼロ除算はできません」旨の回答が得られるかと思います。
ところが思いがけずそのような計算をさせてしまうようなバグを残したままリリースされるプログラムもあるわけで、そういったバグのことを「ゼロ除算の脆弱性」と呼称しているわけです。
今回のは、ちょっと自信ないんですけど、こんな説明でご理解いただけますでしょうか。
あるいは「ソコ間違ってんで!」とかRFC(Request for Comments)です。