Member 13922009 Ответов: 2

Необработанное исключение в 0x5e17a072 (mfc110d.dll) в robotsimu.exe: 0xc0000005: нарушение доступа к местоположению чтения 0x00000000.


// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.

#include "stdafx.h"
#include "sal.h"


/////////////////////////////////////////////////////////////////////////////
// Standard WinMain implementation
//  Can be replaced as long as 'AfxWinInit' is called first

int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
	_In_ LPTSTR lpCmdLine, int nCmdShow)
{
	ASSERT(hPrevInstance == NULL);

	int nReturnCode = -1;
	CWinThread* pThread = AfxGetThread();
	CWinApp* pApp = AfxGetApp();

	// AFX internal initialization
	if (!AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow))
		goto InitFailure;

	// App global initializations (rare)
	if (pApp != NULL && !pApp->InitApplication())
		goto InitFailure;

	// Perform specific initializations
	if (!pThread->InitInstance())
	{
		if (pThread->m_pMainWnd != NULL)
		{
			TRACE(traceAppMsg, 0, "Warning: Destroying non-NULL m_pMainWnd\n");
			pThread->m_pMainWnd->DestroyWindow();
		}
		nReturnCode = pThread->ExitInstance();
		goto InitFailure;
	}
	nReturnCode = pThread->Run();

InitFailure:
#ifdef _DEBUG
	// Check for missing AfxLockTempMap calls
	if (AfxGetModuleThreadState()->m_nTempMapLock != 0)
	{
		TRACE(traceAppMsg, 0, "Warning: Temp map lock count non-zero (%ld).\n",
			AfxGetModuleThreadState()->m_nTempMapLock);
	}
	AfxLockTempMaps();
	AfxUnlockTempMaps(-1);
#endif

	AfxWinTerm();
	return nReturnCode;
}

/////////////////////////////////////////////////////////////////////////////


Что я уже пробовал:

"Разрыв" начинается с этой строки :

if (!pThread->InitInstance())
{
if (pThread->m_pMainWnd != NULL)
{
TRACE(traceAppMsg, 0, "предупреждение: уничтожение ненулевого m_pMainWnd\n");
pthread в-&ГТ;m_pMainWnd-&ГТ;вызове destroywindow();
}
nReturnCode = pThread->ExitInstance();
перейти InitFailure;
}
nReturnCode = pThread->выполнить();

Знаете ли вы, что означает это "необработанное исключение в 0x5E17A072 (mfc110d.dll) в RobotSimu.exe: 0xC0000005: нарушение доступа место чтения 0x00000000" ?

2 Ответов

Рейтинг:
0

Jochen Arndt

Разнесенный код является реализацией по умолчанию из MFC winmain.cpp исходный файл.

Если там происходит нарушение доступа, то вы, вероятно, сделали что-то не так. InitInstance() из ваших CWinApp производный класс или одна из ваших собственных функций, вызываемых там.

Распространенной ошибкой является использование m_pMainWnd без установки его в Главное окно (main frame resp. главное диалоговое окно). Это инициализируется с помощью NULL по умолчанию и должен быть установлен кодом, когда вы хотите его использовать.


Рейтинг:
0

Rick York

Это означает, что разыменовывался нулевой указатель. Скорее всего, это была переменная pThread, так как это основной указатель в фрагменте, который вы включили. m_pMainWnd-это еще одна возможность, но для этого есть логическая проверка.