CEDel.exe中0x03f7111c的第一次机会异常:0xC0000005:访问冲突写入位置0x002e0364

时间:2013-02-21 13:50:11

标签: c++ visual-studio-2008 visual-c++ windows-ce

我在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"

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

1 个答案:

答案 0 :(得分:1)

我猜你有一个宏

#define SERVER_PORT _T("SERVERPORT")

在这种情况下_T("SERVERPORT")是一个const数组 您不能修改它(_wcsupr就地修改其参数。

用变量替换宏:

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