首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pThreads分割故障

pThreads分割故障
EN

Stack Overflow用户
提问于 2014-09-16 09:24:35
回答 1查看 88关注 0票数 1

这是传递给线程声明的结构:

代码语言:javascript
复制
   typedef struct  {
              int rowsPerThread;                    
              int StartingRow;                     
              double co[WIDTH][HEIGHT][2];          
              uint64_t total_iters;                

      } thdata;

下面是我使用它的方法:(注意malloc)

代码语言:javascript
复制
  /* data passed to each thread */
  thdata *data[threads_num];


  /* create threads */
  for (i=0; i<threads_num; i++)
  {
      data[i]=(thdata *)malloc(sizeof(thdata));
      data[i]->rowsPerThread= rowsPerThread;
      data[i]->StartingRow= i*rowsPerThread;

      for (i=i*rowsPerThread; i<rowsPerThread; i++)
      memcpy(data[i]->co[i], Coordinates[i], sizeof (Coordinates) * HEIGHT * 2);


      pthread_create(&thread[i], NULL, (void *) &threaded_calc, (void *) &data[i]);   
      free(data[i]);
  }

我认为malloc()有一个问题。

这给了我分割的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-16 09:32:57

问题是,在创建了一个free之后,您在for块中直接释放了for,而且由于您无法知道thread何时启动,所以可能在threadscheduler有效启动之前释放了data[i]

因此,您应该在线程体中调用free

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

https://stackoverflow.com/questions/25865106

复制
相关文章

相似问题

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