Last Updated 2005/08/05 |
Programming Tips Visual C++ MFC 他のコントロール | 索 引 |
リリースビルドで落ちる(引数不正)
2005/08/05
デバッグでは落ちなくて,リリースで落ちる場合がある. 多くが変数の初期化忘れだったり ASSERT と VERIFY の間違いだったり. しかし以下の場合もある. 「オーバーライドしたメッセージ関数に不要な引数を渡すとリリースビルドで落ちる」 簡単な例として,EN_CHANGE のメッセージ処理を行う時に ON_CONTROL_REFLECT(EN_CHANGE, OnChange) void CSampleEdit::OnChange() { } と通常記述するが,メッセージだからと変に解釈して ON_CONTROL_REFLECT(EN_CHANGE, OnChange) void CSampleEdit::OnChange(WPARAM wParam, LPARAM lParam) { } と記述すると,デバッグビルドだと問題なく動くのにリリースビルドだと強制終了してしまう. ON_CONTROL_RANGE のハンドラでも,引き数を void にしているところがある場合リリースでは動作しない. 引数を UINT にしたらリリースでも問題なく動作する. 参照 デバッグとリリースのコンパイルの違い |
|