假设PDeliver()是一线程函数。现我在PDeliver()里另起一线程,如下:
   void PDeliver(DeliverStr deliver)
   {
  ...
    AfxBeginThread(SgipProc,deliver);//deliver是一结构变量
      ...
    }当PDeliver() 执行完返回后,我的理解是:函数SgipProc()的参数deliver 是得到了PDeliver()的一个拷贝,即使SgipProc()未执行完,而PDeliver()已经完成,deliver 的内容在SgipProc()里仍然存在,不会因为PDeliver()的结束而释放.也就是说在PDeliber()结束后,SgipProc()里对deliver 的访问不会引起内存访问错误。我这样理解对吗?

解决方案 »

  1.   

    楼主注意,线程函数的参数为LPVOID,更精确来说,就是个32位的值。楼主的结构总大小如果等于小于32位(实际不会小于32位),你就可以用值传递的方式传递该结构变量。注意先要强制转换类型。如不然,要不还是照 fohoo(飞狐) 所说,用全局或静态;要不用将该结构对象定义为某类的成员变量,然后传递该类对象的指针就可以了。
      

  2.   

    楼主注意,线程函数的参数为LPVOID,更精确来说,就是个32位的值。楼主的结构总大小如果等于小于32位(实际不会小于32位),你就可以用值传递的方式传递该结构变量。注意先要强制转换类型。如不然,要不用全局或静态;要不用将该结构对象定义为某类的成员变量,然后传递该类对象的指针就可以了。