※ ChatGPTを利用し、要約された質問です(原文:[VisualC++6.0] 突然変数の値が変わります)
[VisualC++6.0] デバッグビルドで突然変数の値が変わる問題について
このQ&Aのポイント
デバッグビルドでプログラムが強制終了されてしまう問題が発生しています。
while文中で突然変数の値が変わる現象が生じており、特に64,320等の値になるようです。
問題の発生箇所はDBGHEAP.Cファイルの一部であることがわかっており、vectorを使っていることと関係があるか検討しています。
[VisualC++6.0] 突然変数の値が変わります
リリースビルドでは問題なく実行されるのですが、
デバッグビルドでは、途中でプログラムが強制終了されてしまいます。
Debug Error!
Program:D:~~.exe
DAMAGE:after Normal Block(#*****) at 0x********.
このような警告ウィンドウが出ます。
デバッグしてみるとwhile文中で突然変数の値が突然変わっているように見えるのですが…
(特に64,320等の値になるようです)
DBGHEAP.C というファイルの
/* if we didn't already check entire heap, at least check this object */
if (!(_crtDbgFlag & _CRTDBG_CHECK_ALWAYS_DF))
{
/* check no-mans-land gaps */
if (!CheckBytes(pHead->gap, _bNoMansLandFill, nNoMansLandSize))
_RPT3(_CRT_ERROR, "DAMAGE: before %hs block (#%d) at 0x%08X.\n",
szBlockUseName[_BLOCK_TYPE(pHead->nBlockUse)],
pHead->lRequest,
(BYTE *) pbData(pHead));
if (!CheckBytes(pbData(pHead) + pHead->nDataSize, _bNoMansLandFill, nNoMansLandSize))
_RPT3(_CRT_ERROR, "DAMAGE: after %hs block (#%d) at 0x%08X.\n",
szBlockUseName[_BLOCK_TYPE(pHead->nBlockUse)],
pHead->lRequest,
→→→ (BYTE *) pbData(pHead));
}
の →→→ の部分で引っかかっているようです。
vector<(クラス名)>を使っているのですが、関係あるのでしょうか?
素人な質問で申し訳ありません。よろしくお願いします。
お礼
デバッグできました。 わざわざ回答ありがとうございました。