最近被指针弄死了,这个为什么又是空?求教调试方法,如何知道哪里传值存在后患

最近被指针弄死了,这个为什么又是空?求教调试方法,怎么知道哪里传值存在后患
       线程A
{
  AA {stirng str;int a;};
  AA aa;
  aa.str = "132432";
sendMessage((WPARAM)&aa);//把aa发送过去某个窗口句柄 

}


窗口接到消息后
  AA {stirng str;int a;};
         AA *pTemp = (AA*)wParam;
 AA  aa;
         aa.str = pTemp.str;    //一个全局链表   list<AA>  list_aa;
list_aa.push_back(aa);检测到这个链表添加后数量变为1,但是str为空????坑爹的指针,我入门不久啊。求高手知道指针该怎么学习,该怎么调试。
------解决思路----------------------
发送局部变量啊,线程一结束局部变量超过生命期就回收了...

你就申请堆上的内存发过去,在接收线程使用后回收堆内存
------解决思路----------------------
pTemp->str;
------解决思路----------------------
把线程中创建的aa改为new出来的指针
在接收消息的地方用memcpy把内容复制到aa中,放到链表里
最后把接收到的指针delete掉

注意变量的生存周期,就不容易发生这样的问题了
------解决思路----------------------
你把结构体中的string aa;换成char aa[XX];然后再试试呢?