C++ 安全传递参数到线程问题

我在主线程的for循环来开启线程:for(inti=0;i<100;i++){pthread_tntid;interr;char*info=newchar[30];//注... 我在主线程的for循环来开启线程:
for (int i =0; i< 100; i++) {
pthread_t ntid;
int err;
char * info= new char[30];//注意这个是要传递的参数而且我刻意NEW在堆上
strcat(info,"haha");
err = pthread_create(&ntid, NULL,SendInfoThread, (void*)info);
if(err!= 0)
{
if (info){
delete[] info;
info = NULL;
}
printf("AnswerClientThread线程创建失败!\n");
}
else
{
pthread_detach(ntid);
info = NULL;
}
}

为何我在子线程里面:
void* SendInfoThread(void* data){

char* sendinf = (char*) data; //这个值有时候不是"haha"字符串

PS:我的主线程SLEEP了几秒,保证所有子线程退出才退出。
展开
 我来答
幸巴达
2015-04-21 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6953
采纳率:38%
帮助的人:2412万
展开全部
根本不是线程问题。
char * info= new char[30];//
strcat(info,"haha"); 这里你用的是strcat,会在第一个\0的位置拼接字符串,而此时info是没有置零的。
解决方法很简单,要么info置零,要么用strcpy
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式