C++で配列のバッファオーバーラン検出

C++で書かれたプログラムの改造をしてますが配列の上限を超えた読書きしてる箇所が多々あってバグだらけのプログラムだというのが受注してから判明してしまいました。
でもバッファオーバーランはコンパイル時も実行時も簡単には検出できません。
OSにしてみればプログラムが所有しているスタックやヒープ内であれば配列の境界なんて関係ないわけです。
そこで思い切ってすべての配列をstl::arrayに変更してみました。
int abc[100]; <-- これを std::tr1::array abc; <-- こんな感じ そうして、こんな代入をしてみると、 abc[200] = 3; 良い感じのアサートを出してくれます。マネージドコードみたいですね。 err.png
デバッグモードでコールスタックを調べればバグコードが調べれるわけですよ。

Author: kachi

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です