void CMapDrawControl::MainThread()
{
bool bQuit = false;
#ifdef MAP_USE_REDRAW_EVENT
const HANDLE hEvent[4]={m_hExitDrawControlEvent,m_hDrawFinishEvent,m_hDrawStartEvent,m_hReDrawStartEvent};
#else
const HANDLE hEvent[3]={m_hExitDrawControlEvent,m_hDrawFinishEvent,m_hDrawStartEvent};
#endif
do
{
DWORD dwRet = 0;
#ifdef MAP_USE_REDRAW_EVENT
dwRet = WaitForMultipleObjects(4,hEvent,FALSE,INFINITE);//吃内存1
#else
dwRet = WaitForMultipleObjects(3,hEvent,FALSE,INFINITE);
#endif
switch(dwRet)
{
case WAIT_OBJECT_0:
//Quite the thread.
bQuit = true;
break;
case WAIT_OBJECT_0 + 1:
//Notice UI to display the bitmap.
WaitForSingleObject(m_hCurrentFigListMutex,INFINITE);
//Added by xiacg at 2007-3-20
if (m_bNeedRedrawRoute) {
SetEvent(m_RouteEventHandle);
m_bNeedRedrawRoute = false;
}
else //if (IsCurrentFinishedInScreen()) //deleted by liulei for test 2007.9.30
{
#ifdef LB_DEBUG_ONDRAW_PROC
CFigAssist::PrintStr("[2]Receive m_hDrawFinishEvent SetEvent\n");
#endif
SetEvent(m_EventHandle);
}
ReleaseMutex(m_hCurrentFigListMutex);
break;
case WAIT_OBJECT_0 + 2:
//Draw bitmap.
DrawMap();

break;
#ifdef MAP_USE_REDRAW_EVENT
case WAIT_OBJECT_0 + 3:
//ReDraw bitmap.
DrawMap(TRUE);
// StopMapDraw();
// ResetEvent(m_hDrawFinishEvent);
// ReDrawMap(NO_USE);
break;
#endif
default:
break;
}
}while(!bQuit);
}在一个工程里面,在红字那个地方出现内存泄露,在debug 下跟踪的结果是:WaitForMultipleObjects函数执行完之后内纯突然猛增,而且,内存始终没有释放掉,每执行一次功能 内存就成倍的累加。我困惑的是 这个函数是各一个等待event的函数不占用什么资源啊,等信号给通知他时候就往下执行,怎么能吃掉那么多内存还不释放呢?、
 请高手明示!!