プログラムを実行させた時、下記の様なメッセージが出力されたあとに、特定の場所でエラーが出てしまいます。
色々と試して見たのですが、解決出来ずに困っております。何方かどの辺を調べれば良いか等のアドバイスをお願い致します。
<エラーメッセージ>
"例外処理 (初回) は XXXX.exe (MFC42D.DLL) にあります: 0xC0000005: Access Violation。"
<停止場所>
CWnd* CWnd::GetDlgItem(int nID) const
{
ここです→ASSERT(::IsWindow(m_hWnd));
if (m_pCtrlCont == NULL)
return CWnd::FromHandle(::GetDlgItem(m_hWnd, nID));
else
return m_pCtrlCont->GetDlgItem(nID);
}
<エラーが発生するプログラム>
BOOL CComProgramDlg::BinarySend(BYTE SendData[], unsigned long SendLength)
{
intRet;
unsigned longLen;
ここら辺です→CStatic* pStic1 = (CStatic*)GetDlgItem(IDC_MSG_STATIC);
Ret = WriteFile(m_hComm,
&SendData[0],SendLength,&Len,NULL);
if(!Ret) return(FALSE);
if(SendLength > Len)
return(FALSE);
pStic1 -> SetWindowText("データを送信しました。");
return(TRUE);
}
上記はデータシリアル通信の送信用で10回程度、このメンバ関数を通した時に急に発生します。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
>なぜ数回後にメモリ破壊が発生してしまうのでしょうか?
たまたま。
>何か心辺りや推測,経験談で結構ですので教えて下さい。
単純なところですと、
・領域のサイズ不足。バッファーオーバーフロー。
・delete等で間違ったポインタを渡して関係ない領域を解放。
ですかね。
まぁ、おそらく読み込み用か、それの管理部分の領域不足でしょうね。
No.1
- 回答日時:
ASSERTで止まる理由:
ウィンドウハンドルが無効
ウィンドウハンドルが無効になる理由:
1.ウィンドウが無い
2.変数の内容が書き換わった。
ですので、ウィンドウが存在しているのでしたらm_hWndの内容が変わっている可能性があります。
>上記はデータシリアル通信の送信用で10回程度、このメンバ関数を通した時に急に発生します。
ここでメモリ破壊してませんか?
この回答への補足
はい。しているみたいです。
デバックモードにて確認してみるとm_hWndの値が評価出来ない状態となってしまっています。
なぜ数回後にメモリ破壊が発生してしまうのでしょうか?
何か心辺りや推測,経験談で結構ですので教えて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
ゲームでは結局どっちが良いの?
-
Excelの上下を固定したい
-
検索の画面がでなくなってしま...
-
FindWindowの戻り値が違う!?
-
コンソールアプリケーションで...
-
ラジオボタンの初期指定
-
ExcelVBAでAPIを使って外部ウイ...
-
作成したウインドウのサイズを...
-
eclipseからコンソールが消えた
-
[VBA] UserForm を Excel の W...
-
UWSCで特定のChromeのタブをア...
-
名前を付けて保存のウィンドウ...
-
デスクトップにフォーカスを移動
-
EnumChildWindowsの使い方(VBA)
-
API32 コントロールのEditテキ...
-
VBAで単一ブック複数窓を閉じる...
-
VB2005のイミディエイト ウィン...
-
ACCESS2007で起動時にフォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
検索の画面がでなくなってしま...
-
ゲームでは結局どっちが良いの?
-
VBA .Value=.Value ?
-
Excelの上下を固定したい
-
[VBA] UserForm を Excel の W...
-
EnumChildWindowsの使い方(VBA)
-
Vba LongPtrについて教えてくだ...
-
ExcelのBOOKが消えた!
-
他のアプリケーションの終了処理
-
ラジオボタンの初期指定
-
ExcelVBAでAPIを使って外部ウイ...
-
作成したウインドウのサイズを...
-
UWSCで特定のChromeのタブをア...
-
隠れたウィンドウの画面をキャ...
-
「&HFFFF」「&H1A」とは?
-
名前を付けて保存のウィンドウ...
-
最大化と最小化ボタン
おすすめ情報