相关代码:1.CDameView有一个静态成员m_Drawer,是一个类
class CDameView : public CView
{
......
public:
    static CDrawTools m_Drawer;
private:
    static UINT  WorkingThread(LPVOID param);
......
}2.工作线程
UINT  CDameView::WorkingThread(LPVOID param)
{
    ......
    typedef  bool (*CONDITION)(state&);
    CONDITION  condition = (CONDITION)m_Drawer.GetCondition(name);
    ......
    if ((*condition)(s)) // 此处中断,提示访问冲突
    {
        ......
    }
    ......
}3.通过CDrawTools的GetCondition方法向工作线程提供CConditionCollector的静态成员函数的地址
class CDrawTools
{
......
private:
    CConditionCollector   m_Collector_Condition;
public:
    LPVOID  GetCondition(LPCSTR name);
......
}4.最终,工作线程在调用这个类的静态成员Condition_Example时产生中断
class CConditionCollector
{
......
public:
    static  bool  Condition_Example(state& s);
......
}

解决方案 »

  1.   

    把错误信息的原话贴出来。
    Condition_Example(state& s);这里的s具体是怎么来的?
      

  2.   

    UINT  CDameView::WorkingThread(LPVOID param)
    {
        ......
        typedef  bool (*CONDITION)(state&);
        CONDITION  condition = (CONDITION)m_Drawer.GetCondition(name);
        ......
        // if ((*condition)(s)) // 此处中断,提示访问冲突
        if (condition(s)) // 函数指针直接使用
        {
            ......
        }
        ......
      

  3.   

    工作线程中调用(*condition)(s)之前对s进行过定义。state是另一个类,其实我贴出来时把名字改了一下,原来的是这个:
    Complex,
    来自:typedef std::complex<double> Complex;错误提示:
    Dame.exe 中的 0x00000000 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突
      

  4.   

    跨线程“直接”使用COM对象,也是失败
      

  5.   

    你用F11调试,最终在哪行代码出错?看看哪个指针是NULL,从何而来。
      

  6.   

    to sys0008:
    还是不行。to cnzdgs :
    我试试。其实有时中断,有时运气不好机子直接没反应,刚刚又重启了两回。
      

  7.   

    在最初赋给condition指针值时,指针好像是有效的,但执行到(*condition)(s)时还是中断,这时condition指针变为了NULL。
    比较奇怪的是,有一些变量的值调试时显示明显都是随机乱码,程序却按照正确的逻辑执行。
      

  8.   

    是用Debug版调试的吗?用Release版调试查看的数据有可能不准。再确认一下condition的变化情况。
      

  9.   

    死了几次。
    对,一开始用的是Release版。刚改成Debug版,冒出来一些其它错误……
    我在Release中(*condition)(s)之前输出了一下condition的值:都是0。我再看看哪开始出的问题。
      

  10.   

    我用到了stl::map <LPCSTR, LPVOID>,会不会有问题?stl::map是不是线程安全的?