首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >退出代码-11“分段故障”正在执行pthread_create

退出代码-11“分段故障”正在执行pthread_create
EN

Stack Overflow用户
提问于 2013-02-04 20:35:41
回答 1查看 720关注 0票数 0

我正在尝试通过使用单个参数执行pthread_create来创建一个新线程。

代码语言:javascript
运行
复制
void P2FPanel::startRecording()
{
  qDebug() << "Start recording...";
  qDebug() << "_bag_list: " << _bag_list->size();
  pthread_create(&_playBags_t, NULL, playBags, _bag_list);
  qDebug() << ".... Started";
}

此方法由按钮触发,并创建pthread。这里的代码已经退出,错误为-11 (我认为这是分段错误)。调试行显示_bag_list不为空。

代码语言:javascript
运行
复制
void* P2FPanel::*playBags(void* arg0)
{
  qDebug() << "Play Bags from _bag_list...";
  QList<BagRef*> *bag_list = (QList<BagRef*>*) arg0;
  qDebug() << "Play " << QString("%1").arg(bag_list->size()) << " Bags";
  //Do stuff
  qDebug() << "Finished playing";
  return 0;
}

此方法应在新线程中运行。

代码语言:javascript
运行
复制
class P2FPanel: public rviz::Panel
{

  private Q_SLOTS:
    void startRecording();

  private:
    QList<BagRef*> *_bag_list;
    void* (*playBags)(void* arg0);
    pthread_t _playBags_t;

};

头文件。

错误是从哪里来的?threaded方法的声明是否正确?

提前谢谢,致以最好的问候,乔希

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-04 20:55:31

据我所知,您不能将class-method传递给pthread。考虑一下:thisthat。您应该使用静态方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14686935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档