程序分为客户端和服务器端,一个公共文件cmd.h
cmd.h中定义了一个结构体 TempStruct
从服务器端通过socket发送一块TempStruct的数据(void * pBuffer)到客户端,
客户端定义了一个成员指针(TempStruct *temp)在一个函数A中接受这块是数据,客户端中有函数B,C,D。
A(void * pBuffer,...)
{
  ...
  temp = (TempStruct *)pBuffer;
  //接下来正常处理一些语句
  ...
  //然后调用A
  A();
  SetTimer(1,5000,NULL);
  ...
}
在OnTimer()中
OnTimer()
{
  if(ID==1)
  {
    KillTimer(1);
    B();
    SetTimer(2,5000);
  }
  if(ID==2)
  {
    KillTimer(2);
    C();
  }
  ...
}在A(),B(),C()中都用到了temp指向的数据块里的不同数据,在函数A中调用的temp指向的数据,正常,但是在B和C调用temp指向的数据,却变成了随机数。
感觉应该是temp指针指向的数据块已经被释放了,但是不知道为什么会被释放,因为temp是客户端的一个类变量,并且A,B,C和temp是在一个类中的。忘前辈们不吝指点啊!!!

解决方案 »

  1.   

    重新考虑你的design吧, 你的design使用类了定时器, 又用了递归调用, 很难保证quality哦.
      

  2.   

    temp = (TempStruct *)pBuffer;
    这个只是指针的传递, 如果指针指向的内容在其它地方被释放掉了,你也就找不到了.
    你可以用memcpy来进行内存拷贝,把内容拷贝过来就安全了.
      

  3.   

    用dubug调试,关注temp指向的内存值。
    看到底哪里讲内存释放了。