+ -
当前位置:首页 → 问答吧 → CRITICAL_SECTION定义为类成员发生奇怪错误,求指点~~

CRITICAL_SECTION定义为类成员发生奇怪错误,求指点~~

时间:2011-12-22

来源:互联网

//CCHThreadControl.h文件
class CCHThreadControl 
{
public:
CCHThreadControl();
virtual ~CCHThreadControl();
protected:
private:
CRITICAL_SECTION m_CriticalSection;
};

//CCHThreadControl.cpp文件
CCHThreadControl::CCHThreadControl()
{
}

CCHThreadControl::~CCHThreadControl()
{
}


//在main.cpp文件中
#include "Headfiles.h"

CCHThreadControl g_ThreadControl;

int main(int argc,char *argv[])
{
return 0;
}


运行以上程序会发生如下错误
ChatThreadPool.exe 中的 0x770fef00 处有未经处理的异常: 0xC0000005: 读取位置 0xfeeefef6 时发生访问冲突

中断停在
#ifdef _M_CEE
System::Threading::Thread::BeginThreadAffinity();
#endif
EnterCriticalSection(_Mtx);
}

求高手指教原因~~

作者: senllang   发布时间: 2011-12-22

CRITICAL_SECTION m_CriticalSection;


它需要初始化的,不知道在使用之前有没有在哪个函数中对它做初始化的处理

作者: mayudong1   发布时间: 2011-12-22

初始化了也不行,在程序退出时还是会发生一样的错误。
如果CRITICAL_SECTION m_CriticalSection;定义成全局变量,不初始化都不会出错,在想是不是不能定义成类成员,郁闷。。。

作者: senllang   发布时间: 2011-12-22

很简单,用之前要初始化。。。
全局变量默认初始化为0的,当然不会出错了。

作者: kyotrue   发布时间: 2011-12-22

CCHThreadControl::CCHThreadControl()
{
InitializeCriticalSection(&m_CriticalSection);
}
CCHThreadControl::~CCHThreadControl()
{
DeleteCriticalSection(&m_CriticalSection);
}

作者: Lactoferrin   发布时间: 2011-12-22

没初始化InitializeCriticalSection

作者: xiaoguailong3   发布时间: 2011-12-22

引用 4 楼 lactoferrin 的回复:

CCHThreadControl::CCHThreadControl()
{
InitializeCriticalSection(&m_CriticalSection);
}
CCHThreadControl::~CCHThreadControl()
{
DeleteCriticalSection(&m_CriticalSection);
}

可以定义成成员变量的,不用担心的

作者: sky101010ws   发布时间: 2011-12-22

热门下载

更多