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