星期一, 7月 04, 2011

Exception

今天在 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 錯誤消失了!!

沒有留言: