![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
お世話になります
無線機とGPSセンサーをCOMPORTでつないで操作やモニターするソフトを作成してまして
煮詰まってしまったので質問させていただきます。
無線機からデータの読み込みで取りこぼしや動作が遅くなってしまったので
マルチスレッドで動作させています
タイミングはまちまちですが動作させてる時に下記のような例外が出てしまいます
inline BOOL AFXAPI AfxAssertFailedLine(LPCSTR lpszFileName, int nLine)
{
// we remove WM_QUIT because if it is in the queue then the message box
// won't display
MSG msg;
BOOL bQuit = PeekMessage(&msg, NULL, WM_QUIT, WM_QUIT, PM_REMOVE);
BOOL bResult = _CrtDbgReport(_CRT_ASSERT, lpszFileName, nLine, NULL, NULL);
if (bQuit)
PostQuitMessage((int)msg.wParam);
return bResult;
}
ATLASSERT( (nCount == 0) || ((iFirst+nCount) <= this->GetLength()) );
// optimize case of returning entire string
if( (iFirst == 0) && ((iFirst+nCount) == this->GetLength()) )
{
return( *this );
}
return( CStringT( this->GetString()+iFirst, nCount, GetManager() ) );
}
void Release() throw()
{
ATLASSERT( nRefs != 0 );
if( _InterlockedDecrement( &nRefs ) <= 0 )
{
pStringMgr->Free( this );
}
}
IAtlStringMgr* GetManager() const throw()
{
IAtlStringMgr* pStringMgr = GetData()->pStringMgr;
return pStringMgr ? pStringMgr->Clone() : NULL;
}
static CStringData* __cdecl CloneData(_Inout_ CStringData* pData)
{
CStringData* pNewData = NULL;
IAtlStringMgr* pNewStringMgr = pData->pStringMgr->Clone(); ここででた
if( !pData->IsLocked() && (pNewStringMgr == pData->pStringMgr) )
{
pNewData = pData;
pNewData->AddRef();
}
else
{
pNewData = pNewStringMgr->Allocate( pData->nDataLength, sizeof( XCHAR ) );
if( pNewData == NULL )
{
ThrowMemoryException();
}
pNewData->nDataLength = pData->nDataLength;
CopyChars( PXSTR( pNewData->data() ), pData->nDataLength+1,
PCXSTR( pData->data() ), pData->nDataLength+1 ); // Copy '\0'
}
return( pNewData );
}
例外がスローされました:読み取りアクセス違反。
**pStringMgr** が 0xDDDDDDDD でした。
ハンドルされない例外が 0x7C6AFC66 (ucrtbased.dll) で発生しました(FT991REMOTE.exe 内):
無効なパラメーターを致命的と見なす関数に無効なパラメーターが渡されました。
とかいろいろでます。
どうやら文字列のやり取りで出てるようなのですが解決に向けてどのように調べていけばよいでしょうか?
色々いじって頻繁出てくるところから少し出にくくなるまでは行ったのですがなかなかうまくいきません
概要です
CFT991REMOTEDlg.cpp
から各処理を呼び出し
FT991_command.cpp
UINT __cdecl FT991_command::CALL_FT991_READ_Thread(LPVOID pData)//スレッド作成
FT991_AUTO_READ(&SSD ,&RRD); //COMPORTから呼び込み
それそれの関数でデータを成形
FT991_commandのグローバル変数に書き込み
FT991_commandのグローバル変数から読んで
CFT991REMOTEDlg
で表示や設定
よろしくお願いします
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
MFCはイマイチ解っていませんが…。
そもそもVisual Studioのバージョンはなんなのでしょう?
んで、VSのDebugモードでのビルドではみ初期化のローカル変数(たぶんクラスのメンバ変数も)は0xDDで初期化されます。
# もちろん、ソレを期待するコードは失格です。
ということで、
>**pStringMgr** が 0xDDDDDDDD でした。
ということは、どこかで初期化すべきところご足りないのでしょう。
そもそも…CloneData()の呼び出しはどこなのか?とか、
CStringDataってどんなクラスなんぞや?とか、
情報不足です。
マルチスレッドで動かす。としているプログラムで、
>FT991_commandのグローバル変数に書き込み
が安全に処理できるのか?というのもありますし。
失礼しました
回答ありがとうございます
開発環境を忘れてましたVS2019です
初期化で忘れているところはないと思っているのですが
どのタイミングでなるかがわからないでいます
印象としては読み込みが忙しくなるところで出る感じです
ソースを載せるにしてもいっぱいあるのでどこから辺りを載せるべき
ものなのかわかないでいます
載せているソースは多分MFCで自分では書いてないところです
例外が発生した時に飛ぶところとしてのせました。
関数が消える時にその関数内の変数にアクセスしてると考え
極力グローバル関数で使うとかやってみてもあまり効果があるような
ないような感じでした
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#のswitch文を簡略化したいの...
-
WM_CREATE について
-
Directxについて
-
COMPORTマルチスレッドで例外発生
-
なぜhButton1ボタンからのWM_CO...
-
エラー Run-Time Check Failur...
-
PeekMessageについて
-
Win32APIでウィンドウを中央に...
-
return文がない場合の戻り値は...
-
マウスの反応
-
cocoa objective-c の return ...
-
C言語win32api、エディットボッ...
-
c言語
-
Enterキーを押されたら次の処理...
-
#define _CRT_SECURE_NO_WARNIN...
-
信頼区間の1.96や1.65ってどこ...
-
2÷3などの余りについて
-
DWORDの実際の型は何でしょうか
-
C言語で分からないところがあり...
-
「指定されたキャストは有効で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
音量調節
-
return文がない場合の戻り値は...
-
C#のswitch文を簡略化したいの...
-
ゲームとかの解像度変更&全画...
-
エラー Run-Time Check Failur...
-
キャレットの現在位置の表示 (W...
-
コンソールアプリケーションの...
-
COMPORTマルチスレッドで例外発生
-
エディットボックスの背景の色...
-
ツリーコントロールの開閉アイ...
-
C言語win32api、エディットボッ...
-
Win32APIにて、ウィンドウ全体...
-
Win32APIでウィンドウを中央に...
-
エディットコントロール入力時...
-
不思議な現象が起こるプログラ...
-
Win32のファイルダイアログのサ...
-
ダイアログプログラムでEnterキ...
-
WM_CREATE について
-
C言語のswitch case文で、scanf...
-
なぜCreateHatchBushの設定が途...
おすすめ情報