消息队列的参数问题,与内存回收机制相关
比如A线程有函数A,B
SentA(parm1) //parm1 不是指针,是一个值
{
SentAsynMsg(&parm1);
}
SentB() //parm1 不是指针,是一个值
{
parm1 = 0x1;
SentAsynMsg(&parm1);
}
对于上面两个伪函数,都是发送异步消息,带的参数均在栈空间内,接收方都是从收到地址去取值,那么是不是有可能接收到错误的值?
我个人分析,这两种方式都是有问题的,这两种函数,在函数执行完均会回收参数和局部变量,所以只要接收方取值的时候,发送方的函数被系统回收了,取到的值就是错误的值。
看官觉得呢?