今天在 VC 2008 debug 遇到 exception, 當 OnInitDialog( )結束時,
在 ATL::CStringData::Release() Line 107 + 0x3 bytes 發生 exception!
後來在字串的處理上出現一點問題.
原來的 code:
DWORD dwRetVal;
TCHAR pPathBuf[MAX_PATH*2];
TCHAR pSrcFileName[] = _T("abc.txt");
dwRetVal = GetTempPath(sizeof(pPathBuf),pPathBuf);
memcpy(&pPathBuf[dwRetVal],pSrcFileName,sizeof(pSrcFileName));
// 我想是因為是編譯成 unicode 的關係, string 使用 memcpy 去做 append 的動作.
修改後的 code:
DWORD dwRetVal;
TCHAR pPathBuf[MAX_PATH*2];
TCHAR pSrcFileName[] = _T("abc.txt");
dwRetVal = GetTempPath(MAX_PATH*2 - 2,pPathBuf);
_tcscat_s(pPathBuf, _countof(pPathBuf), pSrcFileName);
exception 錯誤消失了!!
星期一, 7月 04, 2011
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言