help about segmention fault
I always get a segmentation fault, can someone help me to modify. thanks in advance
Code:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <string.h>
#define MAX 10
pthread_t thread[6];
void *thread1()
{
int *a[16];
int i, n;
for (i = 0; i < 16; i++)
{
n=(size_t) ((rand() * 256.0) / (RAND_MAX + 1.0)) + 1;
a[i] = (int*)malloc(n);
if (a[i]==NULL)
{
printf("Error allocating memory!");
exit (1);
}
printf("malloc a[%d]\n",i);
}
for (i = 16; i > 0; i--)
{
n=(size_t) ((rand() * 256.0) / (RAND_MAX + 1.0)) + 1;
printf("remalloc a[%d]\n",i-1);
a[i - 1] = (int*)realloc(a[i - 1], n);
if ( a[i - 1]==NULL)
{
printf("Error reallocating memory!");
exit (1);
}
}
for (i = 0; i < 16; i += 2 )
free(a[i]);
printf("free1 a[%d]\n",i);
for (i = 16; i > 0; i -= 2)
free(a[i - 1]);
printf("free2 a[%d]\n",i-1);
pthread_exit(NULL);
}
void thread_create(void)
{
int temp,i;
memset(&thread, 0, sizeof(thread)); //comment1
/**/
for (i = 6; i > 0; i--)
{
if((temp = pthread_create(&thread[i], NULL, thread1, NULL)) != 0) //comment2
printf("thread create failed\n");
else
printf("thread create\n");
}
}
void thread_wait(void)
{
int i;
for (i = 6; i > 0; i--)
{
if(thread[i] !=0) { //comment4
pthread_join(thread[i],NULL);
printf("1\n");
}
}
}
int main()
{
printf("\n");
thread_create();
printf("\n");
thread_wait();
return 0;
}