我收到“ CEDel.exe中0x03f7111c的首次机会异常:0xC0000005:访问冲突写入位置0x002e0364。”运行我的代码时出错。我当前正在调试模式下运行,并且在插入计算机的实际Win Mobile CE 6.5.3设备上运行。堆栈的顶部(不是反汇编的)指向if语句,我不确定是什么导致了错误。该项目是几年前使用MS eMbedded C ++创建的,我正将其移植到MS Visual Studio 2008。

该代码是

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”

我不确定在哪里可以找到错误,

最佳答案

我想你有一个宏

#define SERVER_PORT _T("SERVERPORT")


在这种情况下,_T("SERVERPORT")是一个const数组。
您不允许对其进行修改(_wcsupr就地修改其参数)。

将宏替换为变量:

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

10-06 09:10