从'void *'到'pthread_t *'的转换无效

时间:2017-03-07 02:50:37

标签: c++ parallel-processing pthreads

我正在编写C / C ++代码来练习PThreads。我正在解释我的导师的例子。我收到了错误。我不知道如何继续。错误是:从'void *'到'pthread_t *'的转换无效,它是由malloc行引起的。

我留下了一些代码。 thread_count是一个全局变量,其值在命令行中捕获。

#include <cstdlib>
#include <cstdio>
#include <sys/time.h>
#include <pthread.h>

int main(int argc, char *argv[])
{
   // this is segment of my code causing error
   // doesn't like the third line of code 
   static long thread; 
   pthread_t* thread_handles;
   thread_handles = malloc(thread_count*sizeof(pthread_t)); 
}

1 个答案:

答案 0 :(得分:0)

您需要将从malloc返回的指针显式转换为正确的类型:

static long thread; 
pthread_t* thread_handles;
thread_handles = (pthread_t*)malloc(thread_count*sizeof(pthread_t));

malloc没有返回正确输入的指针,因为它不知道你想要什么类型。它返回void*。除非您明确地将其转换为正确的类型,否则C ++不会允许您将void*分配给不同类型的变量。