だから私はヒープの問題の破損を抱えており、それがいくつかのアレイでの作業方法に関係しているのではないかと考えました。実際、ある時点で、このようなメッセージがWinProcに送信されました。
SendMessage(hwnd, LOG_ADD, NULL, (LPARAM)L"Initializing winsock... ");
LOG_ADDは104として定義されています。WinProc内で、msg == LOG_ADDの場合、次のようになります。
case LOG_ADD:
{
pGame->pMessageLog->PutToLog((WCHAR*)lParam);
pGame->pD2DResources->OnRender(pGame->pMessageLog);
MessageLog :: PutToLog(WCHAR [])があります:
void MessageLog::PutToLog(WCHAR txt[])
{
int strLen=wcslen(txt);
int logLen=wcslen(logHistory);
WCHAR* pWCHAR = txt;
int x=0;
// Counts the number of '\n' into wString and adds that number to nLogLines
for(x=0; x<strLen; x++)
{
if(pWCHAR[x]=='\n')
nLogLines++;
}
pWCHAR = logHistory;
x=0;
while(nLogLines>5)
{
if(pWCHAR[x]=='\n')
nLogLines--;
x++;
}
if(x!=0)
{
for(int y=0; y<logLen-x; y++)
{
pWCHAR[y]=pWCHAR[y+x];
}
}
wcscat (logHistory, txt);
}
これは破損の問題を説明できますか?実際、SendMessage(hwnd、LOG_ADD ...)のすべての行を削除すると、数行後にコンパイラが「struct hostent * host;」の行を実行しても、破損は表示されません。または「if((host = gethostbyname(server))== NULL)」。