是这样的,我在类中声明:
class MyClass
{
...
HWND m_ctlMessage;
...
}在成员函数中调用:
HRESULT MyClass::PlayBegin(CTime ct)
{
....
if(m_ctlMessage==NULL) //这句出错!内存冲突!
....
}我有在构造函数中加 m_ctlMessage=NULL;
结果问题依旧
但也有时候这句运行正常,不过是从另一个地方调用PlayBegin时正常。
把m_ctlMessage改为全局变量就正常了,但是其它的类的成员变量还是出现这个一样问题。请问大侠们,这是怎么回事?有什么可能会出现这个问题???
class MyClass
{
...
HWND m_ctlMessage;
...
}在成员函数中调用:
HRESULT MyClass::PlayBegin(CTime ct)
{
....
if(m_ctlMessage==NULL) //这句出错!内存冲突!
....
}我有在构造函数中加 m_ctlMessage=NULL;
结果问题依旧
但也有时候这句运行正常,不过是从另一个地方调用PlayBegin时正常。
把m_ctlMessage改为全局变量就正常了,但是其它的类的成员变量还是出现这个一样问题。请问大侠们,这是怎么回事?有什么可能会出现这个问题???
MyClass c1, c2;
c1.初始化();
c1.PlayBegin(); //正常
c2.PlayBegin(); //不正常,因为c2没有初始化。记住:c1和c2没有任何的关系,就好象我和你一样,虽然都是人(MyClass), 但你是你,我是我。
这个类我只有一个实例,所以不是这个问题
TO:SeekTruth(鹤舞白沙)
我也怀疑是堆栈有问题,但不知道怎么检查?
TO: DentistryDoctor(My heart will fly,in the sky.)
是这行的问题,不过不是比较出问题,而是读取m_ctlMessage变量值时非法了
TO:guxingfeiyu(孤星飞雨)
你说的也有一定道理,不过我没用多线程,而是用Timer,不知道会不会也存在互斥的问题?
我帮你瞧瞧。[email protected]
多谢你的热心,可惜我的程序拷不出来,公司很变态,编程与上网分开的网络,而且把USB口堵了。
还找不到问题所在,解决是解决了,不过也是莫名其妙,我把本该在PlayBegin函数调用的改在OnTimer里调用就没问题了,不知道为什么,所以我还是要找出问题所在。