我正在编写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));
}
答案 0 :(得分:0)
您需要将从malloc
返回的指针显式转换为正确的类型:
static long thread;
pthread_t* thread_handles;
thread_handles = (pthread_t*)malloc(thread_count*sizeof(pthread_t));
malloc
没有返回正确输入的指针,因为它不知道你想要什么类型。它返回void*
。除非您明确地将其转换为正确的类型,否则C ++不会允许您将void*
分配给不同类型的变量。