首页 > 解决方案 > c ++如何修复此代码中的分段错误11

问题描述

我有一个信号 11;即段错误。我知道它发生在哪里(见代码),但不知道如何纠正它。

int *totalThreadNumProduced; //array
int *totalThreadNumConsumed; //array
int *tempStats; //array
for(int i=0; i < global_args.numProducers; i++)
{  
    tempStats = (int*) pthread_join( tidP[i], NULL );
    simulationStats.totalThreadNumProduced[i] = tempStats[0]; //where the segmentation fault 11 is
    simulationStats.numTimesBufferFull += tempStats[1];

}

标签: c++

解决方案


tempStats = (int*) pthread_join( tidP[i], NULL );

tempStats是一个整数数组,从以下行判断:

simulationStats.totalThreadNumProduced[i] = tempStats[0];

段错误是由于没有为totalThreadNumProduced或分配内存tempStats

此外,您的用法pthread_join可能不正确;它只是返回调用是否成功。如果您想要完整线程函数的返回值,请考虑使用此处所示的第二个状态参数。pthread_join


推荐阅读