|
我想记录定时器任务的指针,如下操作
// 创建任务对象
CTimerTask<TYPE>* pTask = new CTimerTask<TYPE>( 0 );
ACE_ASSERT( pTask );
if ( pTask == NULL )
{
ACE_ERROR( (LM_ERROR,
ACE_TEXT ("<CTimerManager::regist_period_cycle_task> new start CTimerTask failed!\n")) );
return -1;
}
pTask->m_fnTask = pFun;
pTask->m_sTime = ACE_Time_Value(startTime);
pTask->m_interval = ACE_Time_Value(cycleSecond, cycleMillisecond);
pTask->m_stData.data = data;
// 注册任务
pTask->m_lID = m_timer.schedule( pTask, (void*)&(pTask->m_stData),
pTask->m_sTime, pTask->m_interval );
if ( pTask->m_lID <= 0 )
{
ACE_ERROR( (LM_ERROR,
ACE_TEXT ("<CTimerManager::regist_single_task> schedule start time task failed(ID=%l)!\n"), pTask->m_lID) );
delete pTask;
pTask = NULL;
return 0;
}
m_mapTimer.insert(pair<long, void*>(pTask->m_lID, (void*)pTask));
有时执行m_mapTimer.insert(pair<long, void*>(pTask->m_lID, (void*)pTask));时程序崩溃,提示访问越界,很纳闷,我只是保存一个指针,怎么能访问越界呢? |
|