紧急求助:VC多线程 指针传值问题:

zgycool 2003-12-12 10:22:22


我在主线程中开了一个线程,我想给线程传递一个整数,在线程中引用此整数;

现在我这样传递的:
以下i值在之前已给定;试过三种不同的方法:
1)int *p=new int(i);
AfxBeginThread(f(),(LPVOID)(p),0,0,0);
2)
int p=&i;
AfxBeginThread(f(),(LPVOID)(p),0,0,0);
3)
AfxBeginThread(f(),(LPVOID)(&i),0,0,0);
在线程函数f(LPVOID pParam)中,我取到的不是正确的值啊:
int *p=static_cast<int *>pParam;
int i=*p;
得到的i值是个很大的负数,我想传的是10,但得到的是-124770之类的数字(好象每次都不同),请问大家这是什么原因呢?

...全文
13 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
checkyvc6 2003-12-12
int *p=new int(10);
memset(p,'11',10*sizeof(int))
这样就又值了
  • 打赏
  • 举报
回复
aaasng 2003-12-12
不知道你哪儿有问题,试了第一种可以啊

UINT f( LPVOID pParam )
{
int *p=static_cast<int *>(pParam);
int i=*p;
CString str;
str.Format("%d", i);
AfxMessageBox(str);
return 0;
}

void CEewDlg::OnButton1()
{
int *p=new int(10);
AfxBeginThread(f,(LPVOID)(p),0,0,0);
}
  • 打赏
  • 举报
回复
发帖
进程/线程/DLL
加入

1.5w+

社区成员

VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
申请成为版主
帖子事件
创建了帖子
2003-12-12 10:22
社区公告
暂无公告