消息队列的参数问题,与内存回收机制相关

David_Hu 2014-07-10 11:30:46
比如A线程有函数A,B
SentA(parm1) //parm1 不是指针,是一个值
{
SentAsynMsg(&parm1);
}

SentB() //parm1 不是指针,是一个值
{
parm1 = 0x1;
SentAsynMsg(&parm1);
}

对于上面两个伪函数,都是发送异步消息,带的参数均在栈空间内,接收方都是从收到地址去取值,那么是不是有可能接收到错误的值?

我个人分析,这两种方式都是有问题的,这两种函数,在函数执行完均会回收参数和局部变量,所以只要接收方取值的时候,发送方的函数被系统回收了,取到的值就是错误的值。

看官觉得呢?
...全文
191 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
91program 2014-07-10
  • 打赏
  • 举报
回复
参数嘛,被赋值到消息体中,已经有那些局部变量没有关系。 简单的试验,发消息后立刻改变局部变量的值,看看接收到的消息值是什么。
zhenghn2010 2014-07-10
  • 打赏
  • 举报
回复
为何要加地址符?这样就危险了. 如果是简单值传递 应该没问题

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧