バッファオーバーランについて
Posted: 2009年5月30日(土) 19:18
お世話になっております、山崎です。
今回はバッファオーバーランについて伺いに参りました。
OSはXP、エディタはMicrosoft Visual C++ 2008です。
デバッグしていたところ、
FHandle=CreateFontToHandle(NULL,FontSize,1,DX_FONTTYPE_EDGE);
という行を実行したときに「バッファ オーバーランが ○○.exe で発生し、プログラムの内部状態を破損しました。(以降略)」という
メッセージが出て、それ以降の実行ができません。
コードの量が多いため全てのコードを載せることはできませんが、
ある程度の量のメモリを必要とするオブジェクトや構造体はnewで動的確保し、
可能であればintを避けてshort intを使うなど、極力メモリは節約してきたつもりです。
タスクマネージャでこのプログラムのメモリ使用量を見たところ、
バッファオーバーランが起こったのは34732Kのときでした。
今作成中のプログラムはまだまだ大きくなる予定なので、
これ以上このプログラムにメモリを割くことができないとなると致命的です。
このバッファオーバーランとは、どのようなときに起こるのでしょうか?
バッファオーバーランを引き起こしてしまうありがちなミスなどがあれば
是非とも教えていただきたいと思います。
今回はバッファオーバーランについて伺いに参りました。
OSはXP、エディタはMicrosoft Visual C++ 2008です。
デバッグしていたところ、
FHandle=CreateFontToHandle(NULL,FontSize,1,DX_FONTTYPE_EDGE);
という行を実行したときに「バッファ オーバーランが ○○.exe で発生し、プログラムの内部状態を破損しました。(以降略)」という
メッセージが出て、それ以降の実行ができません。
コードの量が多いため全てのコードを載せることはできませんが、
ある程度の量のメモリを必要とするオブジェクトや構造体はnewで動的確保し、
可能であればintを避けてshort intを使うなど、極力メモリは節約してきたつもりです。
タスクマネージャでこのプログラムのメモリ使用量を見たところ、
バッファオーバーランが起こったのは34732Kのときでした。
今作成中のプログラムはまだまだ大きくなる予定なので、
これ以上このプログラムにメモリを割くことができないとなると致命的です。
このバッファオーバーランとは、どのようなときに起こるのでしょうか?
バッファオーバーランを引き起こしてしまうありがちなミスなどがあれば
是非とも教えていただきたいと思います。