线程引起溢出的问题!

szclm szclm 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
dword dwAddr = 0;
void funcA( void *pData )
{
(struct stA *) pstA = (struct stA *)pData;
//pWnd是全局的
dwAddr = (dword)pstA->pWnd;
}

//线程函数
void *funcB( void *pParam )
{
printf( "A point: %u\n", dwAddr );
...//do some thing
printf( "B point: %u\n", dwAddr );
...//do some thing
printf( "C point: %u\n", dwAddr );
return NULL;
}

int main(void)
{
for(;;)
{
//确保线程已结束
      sleep( 10000 );
printf( "D point: %u\n", dwAddr);
...//do some thing
printf( "E point: %u\n", dwAddr);
create_thread( NULL, NULL, funcB, NULL);
printf( "F point: %u\n", dwAddr);
}
return 0;
}

funcA是被先执行的,确保了dwAddr是有值!且执行后得到一个正确的值!
在main中多次启动了线程函数funcB,在第一次执行时A-F打印出来的值都是正确的!
但问题是第二次时,A-F打印是同一个值,但已经不正解了!

请问:各位高手,这样会是由于什么的情况引起的呢?
...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
szclm
进程/线程/DLL 15,465 成员 49,169 内容