why cause exception??
-
:confused:class TaskInfoBase { .... virtual void setSize(int) = 0; }; class NewTaskInfo : public TaskInfoBase { NewTaskInfo() { InitializeCriticalSection(&m_cs); } ~NewTaskInfo() { DeleteCriticalSection(&m_cs); } void setSize(int); static CRITICAL_SECTION m_cs; }; class NewTask : public NewTaskInfo, pubic NewTaskBase { }; class HttpDownload : public DownData , public CHttpDown { public: HttpDownload():NewTaskInfo() {} void write(); NewTask *m_pTask; }; //****************************************************************************** // Implement CRITICAL_SECTION NewTaskInfo::m_cs; void NewTaskInfo::setSize(int i) { EnterCriticalSection(&m_cs); // Exception here . m_nSize = i; LeaveCriticalSection(&m_cs); } void HttpDown::write() { .... m_pTask->setSize(20002); // Enter NewTaskInfo::setSize(); }
-
:confused:class TaskInfoBase { .... virtual void setSize(int) = 0; }; class NewTaskInfo : public TaskInfoBase { NewTaskInfo() { InitializeCriticalSection(&m_cs); } ~NewTaskInfo() { DeleteCriticalSection(&m_cs); } void setSize(int); static CRITICAL_SECTION m_cs; }; class NewTask : public NewTaskInfo, pubic NewTaskBase { }; class HttpDownload : public DownData , public CHttpDown { public: HttpDownload():NewTaskInfo() {} void write(); NewTask *m_pTask; }; //****************************************************************************** // Implement CRITICAL_SECTION NewTaskInfo::m_cs; void NewTaskInfo::setSize(int i) { EnterCriticalSection(&m_cs); // Exception here . m_nSize = i; LeaveCriticalSection(&m_cs); } void HttpDown::write() { .... m_pTask->setSize(20002); // Enter NewTaskInfo::setSize(); }
I would guess that the
m_pTask
pointer doesn't point to a validNewTaskInfo
object. If that's the case, thethis
pointer on entry to thesetSize
function isn't valid, and the resultingm_cs
member passed to theEnterCriticalSection
function doesn't represent a valid critical section.
Software Zen:
delete this;