Исключение первого шанса в 0x03f7111c в CEDel.exe: 0xC0000005: место записи нарушения прав доступа 0x002e0364

Я получаю «Исключение первого шанса в 0x03f7111c в CEDel.exe: 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»

Я не уверен, где искать ошибку,

0

Решение

Я думаю, у вас есть макрос

#define SERVER_PORT _T("SERVERPORT")

в таком случае _T("SERVERPORT") это константный массив
Вы не можете изменять его (_wcsupr изменяет свой аргумент на месте).

Замените макрос на переменную:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]