ある時からアサート発生 – プログラミング – Home

ある時からアサート発生
 
通知
すべてクリア

[解決済] ある時からアサート発生


kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

お世話になっています。
Win2000, VC6.0, MFC, SDI(CFormView)で開発中です。

あるときからDebug Assertion Failedのダイアログが出るように
なってしまいました。
コールスタックを見ると

CBrush::CreateSolidBrush
CGDIObject::Attach
CHandleMap::SetPermanent
CMapPtrToPtr::operator[]
AfxAssertValidObject

となっています。
アウトプットウィンドウには
ASSERT_VALID fails with illegal vtable pointer.
HEAP[megro.exe]: Heap block at 00346260 modified at 00349C68 past requested
size of 3a00

と表示されています。

Viewのコンストラクタに

m_Brush.CreateSolidBrush(RGB(255, 240, 240)); // m_BrushはCBrush型のメンバ

と記述してあり、ここでとまっているようです。
今までは何の問題もありませんでした。

わけのわからないエラーで困っています。
ご助言をお願いいたします。 m(__)m


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> Viewのコンストラクタに
> m_Brush.CreateSolidBrush(RGB(255, 240, 240)); // m_BrushはCBrush型のメンバ
> と記述してあり、ここでとまっているようです。

これをコメントアウトすればその現象は消えますか?
ならば、コンストラクタでそれをやったのがマチガイなのでしょう。
OnCreate/OnInitialUpdateあたりに移してみてはいかがでしょう。


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

επιστημηさん レスありがとうございます。

>これをコメントアウトすればその現象は消えますか?

コメントにしてもエラーが出ます。
なにか壊れてしまったのでしょうか?

ASSERT_VALID fails with illegal vtable pointer.
のメッセージが出ています。
困りました。(T_T;


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

メッセージによれば仮想関数テーブルの異常により
ASSERT_VALIDに引っ掛かったと。

メッセージマップに悪さしてませんか?
動いていた時点まで遡ることはできないのですか?


返信引用
kai
 kai
(@kai)
ゲスト
結合: 23年前
投稿: 64
Topic starter  

επιστημηさん 超高速レスありがとうございます。
30秒ごとにのぞいてますか?(笑)

>メッセージマップに悪さしてませんか?
>動いていた時点まで遡ることはできないのですか?

そのクラスのメッセージマップは特に問題なさそうです。
多分何かが壊れてしまったのだと思っています。
仕方がないから、少し前のプロジェクトでやりなおそうかと
思っています。

一応解決としますが、アドバイスがありましたら
引き続きお待ちしています。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました