是这样的,我在类中声明:
class MyClass
{
...
HWND m_ctlMessage;
...
}在成员函数中调用:
HRESULT MyClass::PlayBegin(CTime ct)
{
 ....
  if(m_ctlMessage==NULL)  //这句出错!内存冲突!
 ....
}我有在构造函数中加 m_ctlMessage=NULL;
结果问题依旧
但也有时候这句运行正常,不过是从另一个地方调用PlayBegin时正常。
把m_ctlMessage改为全局变量就正常了,但是其它的类的成员变量还是出现这个一样问题。请问大侠们,这是怎么回事?有什么可能会出现这个问题???

解决方案 »

  1.   

    你是滥用了吧。如:
    MyClass c1, c2;
    c1.初始化();
    c1.PlayBegin(); //正常
    c2.PlayBegin(); //不正常,因为c2没有初始化。记住:c1和c2没有任何的关系,就好象我和你一样,虽然都是人(MyClass), 但你是你,我是我。
      

  2.   

    if(m_ctlMessage==NULL)  //这句出错!内存冲突!?????应该不是这一行的问题吧,一个比较操作会造成内存冲突?
      

  3.   

    TO: younggle(洋溢) 
    这个类我只有一个实例,所以不是这个问题
    TO:SeekTruth(鹤舞白沙)
    我也怀疑是堆栈有问题,但不知道怎么检查?
    TO: DentistryDoctor(My heart will fly,in the sky.) 
    是这行的问题,不过不是比较出问题,而是读取m_ctlMessage变量值时非法了
    TO:guxingfeiyu(孤星飞雨) 
    你说的也有一定道理,不过我没用多线程,而是用Timer,不知道会不会也存在互斥的问题?
      

  4.   

    把程序发给我吧,
    我帮你瞧瞧。[email protected]
      

  5.   

    TO:younggle(洋溢) 
    多谢你的热心,可惜我的程序拷不出来,公司很变态,编程与上网分开的网络,而且把USB口堵了。
      

  6.   

    TO: jiangdoudoux()
    还找不到问题所在,解决是解决了,不过也是莫名其妙,我把本该在PlayBegin函数调用的改在OnTimer里调用就没问题了,不知道为什么,所以我还是要找出问题所在。