紧急求助: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之类的数字(好象每次都不同),请问大家这是什么原因呢?

...全文
42 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
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);
}

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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