我正在学习C中的线程。
我正在尝试分配一个p_thread结构数组,以便它们可以运行某些函数然后将它们连接在一起。
所以我的步骤是: 1.创建一个指向pthread结构数组的指针(用户输入的大小不同) 2.分配pthread结构数组 3.为每个数组位置创建一个pthread
我的代码:
pthread_t * pthreadArray[userInputSize];
pthreadArray = malloc ((sizeof(pthread_t)) * userInputSize);
但是我收到了错误:
incompatible types when assigning to type 'pthread_t *[(size type)(userInputSize)]' from type 'void *'
任何人都可以澄清吗?
答案 0 :(得分:0)
行pthread_t * pthreadArray[userInputSize];
正在分配一个大小为pthread
的{{1}}指针数组。第二行试图用新分配的指针覆盖它,这不是你的意图。所以你应该从第一行中删除userInputSize
部分。另外,第二行中有一些错误的括号。修复如下:
[]
答案 1 :(得分:0)
pthread_t * pthreadArray[userInputSize];
这声明了一个长度为pthread_t*
的{{1}}数组。这根本不是你想要的。尤其是因为userInputSize
在编译时是未知的,所以这将是一个可变长度数组(VLA)。
当然你想要这样做:
userInputSize
这使得pthread_t *pthreadArray = malloc(sizeof(pthread_t) * userInputSize);
属于pthreadArray
类型,并将其初始化为动态分配的数组所需大小的内存块。