首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

COM中使用CreateThead如何传参数

2013-08-11 
COM中使用CreateThead怎么传参数?我建了一个COM对像。然后在一个接口方法里。。typedef struct st{char * nam

COM中使用CreateThead怎么传参数?
我建了一个COM对像。然后在一个接口方法里。。


typedef struct st
{
char * name;
int age;
}ST,*PST;




ST st ;

st.name = "zhansan";

MessageBox(NULL,st.name,"",0); //这里取出来的值成功显示,证明附值成功了

CreateThread(NULL,0,CAdapterObj::ThreadFun, &st ,0,NULL);



然后在




DWORD WINAPI  CAdapterObj::ThreadFun(PVOID lpParameter)
{
PST pst = (PST)lpParameter;
         
MessageBox(NULL,(pst->name,"",0); //这里取出来的值为什么不对呢?



[解决办法]
ST st ;
st.name = "zhansan";

你这是局部变量,离开作用域就没用了。线程里再去获取当然就是个无效地址了。
[解决办法]
引用:
C C++要用_beginthreadex创建线程不要用CreateThread


只要不用strtok之类的c函数,其实一样。

楼主的错误在于:一,st是在栈中分配的,函数结束就被释放了,需要new。
二,st中的name也只是个指针,因为"zhansan"在常量区,不会丢失,是没错的。但如果是char a[] = "zhansan",st.name = a;这样就会丢失,理由同一。所以一般做法是
typedef struct st
{
    char name[128];
    int age;
}ST,*PST;

热点排行