程序分为客户端和服务器端,一个公共文件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是在一个类中的。忘前辈们不吝指点啊!!!
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是在一个类中的。忘前辈们不吝指点啊!!!
这个只是指针的传递, 如果指针指向的内容在其它地方被释放掉了,你也就找不到了.
你可以用memcpy来进行内存拷贝,把内容拷贝过来就安全了.
看到底哪里讲内存释放了。