在我的程序中 pthread_join 之后,我不断收到段错误(核心转储)。它可以很好地打印出预期的结果,但是在加入线程时会出现段错误。我已经查看了有关此主题的其他几个讨论,但建议的解决方案似乎都不适用于我的情况。这是我的编译命令的样子(没有编译警告或错误):
$ gcc -Wall -pthread test.c -o test
这是输出:
$ ./test
1 2 3 4 5 6 7 8 9 10
Segmentation fault (core dumped)
这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int array[10];
void *fillArray(int *size) {
int i;
for (i = 0; i < *size; i++) {
array[i] = i+1;
}
return NULL;
}
int main (int argc, char *argv[])
{
int i, rc;
int size = 10;
pthread_t thread;
void *res, *end;
//initialize the array
for (i = 0; i < size; i++) {
array[i] = 0;
}
rc = pthread_create(&thread, NULL, fillArray(&size), &res);
if (rc != 0) {
perror("Cannot create thread");
exit(EXIT_FAILURE);
}
//print the array
for (i = 0; i < size; i++) {
if (array[i] != -1)
printf("%d ", array[i]);
}
printf("\n");
rc = pthread_join(thread, &end);
if (rc != 0) {
perror("Cannot join thread");
exit(EXIT_FAILURE);
}
return 0;
}
任何想法可能是什么原因?