問題:編寫的MFC程序Debug時無錯誤;Relesse版本中提示debugHeap.cpp中 888行錯誤,其實就是堆被破壞,並且定位到了一個奇怪的地方,如下圖:
問題重現:在此MFC程序中我調用了自己編寫的外部動態庫,外部接口爲GetTranslateInfo(TF, sTranslate, SimpleInfoColor, arrDetailInfo);函數。經調試顯示進入函數中向arrDetailInfo.add()增加內容時出錯,但是經查找並無語法錯誤。在函數前後增加BUFF數組,看經過函數運行後數組內存是否被破壞,經查也無破壞。
//更新顯示
void UpdateShow(Frame TF)
{
m_TranDetInfo.DeleteAllItems();
//報文內容
CString sTranslate = L"";
COLORREF SimpleInfoColor;
CArray<DetailTranslateInfo, DetailTranslateInfo&> arrDetailInfo;
GetTranslateInfo(TF, sTranslate, SimpleInfoColor, arrDetailInfo);
int listCnt = m_TranDetInfo.GetItemCount();
CString tmp;
for (int i = 0; i < arrDetailInfo.GetCount(); i++)
{
/*
部分代碼
********************************
*/
listCnt++;
}
}
解決辦法:在動態庫工程與M