2013-02-21 63 views
0

我收到「CEDel.exe中0x03f7111c的第一次機會異常:0xC0000005:訪問衝突寫入位置0x002e0364」。運行我的代碼時出錯。我目前正在調試模式下運行,並且運行在插入到我的計算機上的實際Win Mobile CE 6.5.3設備上。堆棧頂部(不是反彙編)指向一條if語句,我不確定是什麼導致了錯誤。該項目於MS嵌入式C++創建幾年以前,我將它移植到微軟的Visual Studio 2008的CEDel.exe中0x03f7111c的第一次機會異常:0xC0000005:訪問衝突寫入位置0x002e0364

的代碼是

CDeviceFuncCursor& curs = tempDeviceFunc.GetCursor();// added for debug checks 

if (((wcscmp(_wcsupr(tempDeviceFunc.GetCursor().m_szSection), _wcsupr(INI_SERVERS_SECTION)) == 0) && //INI_SERVERS_SECTION == _T("Servers") 
    ((wcscmp(_wcsupr(tempDeviceFunc.GetCursor().m_szVariable), _wcsupr(FTP_PRIMARY)) == 0) || //FTP_PRIMARY == _T("Primary") 
* (wcscmp(_wcsupr(tempDeviceFunc.GetCursor().m_szVariable), _wcsupr(SERVER_PORT)) == 0)))) //SERVER_PORT == _T("SERVERPORT") 
{ 
    CString csValue = tempDeviceFunc.GetCursor().m_szValue; 
    csValue = EncryptData(csValue.GetBuffer(csValue.GetLength())); 

    WriteProfileString(tempDeviceFunc.GetCursor().m_szSection, tempDeviceFunc.GetCursor().m_szVariable, csValue.GetBuffer(csValue.GetLength()+1)); 
} 

與*行是一個由指向疊加。

在斷點處:curs.m_szSection = 「APPLICATIONCONTROL」,curs.m_szVariable = 「AppLanguage」,curs.m_szValue == 「0」

我不知道到哪裏找錯誤,

回答

1

我猜你有一個宏觀

#define SERVER_PORT _T("SERVERPORT") 

在這種情況下_T("SERVERPORT")是一個常量數組。
您不允許修改它(_wcsupr就地修改其參數)。

用變量替換宏:

TCHAR SERVER_PORT[] = _T("SERVERPORT"); 
+0

多謝你,我就不會想到找有一段時間了。 這確實修復了我的代碼。 – Mike 2013-02-21 15:15:30

相關問題