c++ - 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];
}
解决方案
tempStats = (int*) pthread_join( tidP[i], NULL );
tempStats
是一个整数数组,从以下行判断:
simulationStats.totalThreadNumProduced[i] = tempStats[0];
段错误是由于没有为totalThreadNumProduced
或分配内存tempStats
。
此外,您的用法pthread_join
可能不正确;它只是返回调用是否成功。如果您想要完整线程函数的返回值,请考虑使用此处所示的第二个状态参数。pthread_join
推荐阅读
- c - 在 GStreamer 中不使用 videoconvert 将 YUV420 转换为 BGR
- python - wxpython组合框值参数未正确设置初始值
- c# - 如何解决“注册为'Async Scoped'生活方式,但在活动(Async Scoped)范围的上下文之外请求实例”
- ios - 为什么不调用表视图委托方法?
- java - 在不知道元素数量的情况下继续存储在数组中直到有用户输入?
- c++ - 如何使用 Windows API 创建对任务管理器隐藏的进程?
- c++ - 如何在模板类中调用继承类的函数
- visual-studio - Visual Studio 中的 docker run 命令在哪里
- python - 使用迭代器对数组进行切片
- joomla - Joomla - 如何将所有异常/错误重定向到 404 页面或返回主页