【发布时间】:2013-11-16 21:49:36
【问题描述】:
我有这么一段代码:
void *write_parallel(void *num_for_chunk) {
struct rusage *sum = (struct rusage*) malloc(sizeof(struct rusage));
if(sum==NULL) {
perror("Writing buffer: ");
}
sum->ru_utime.tv_sec = 0;
sum->ru_utime.tv_usec = 0;
sum->ru_stime.tv_sec = 0;
sum->ru_stime.tv_usec = 0;
pthread_exit(sum);
}
我有一个线程表:
pthread_t* thread_table = (pthread_t *) malloc(sizeof(pthread_t)*num_of_threads);
我正在创建一个线程:
pthread_create(thread_table+(sizeof(pthread_t)*j),NULL,write_parallel,&num_for_chunk);
并加入:
pthread_join(*(thread_table+(sizeof(pthread_t)*j)),&part_res);
当我运行程序时,我得到了:
*** Error in `./write_test': free(): invalid pointer: 0x00007f6b6e44a700 ***
我认为线程消失时有问题,我想获得一个传递给pthread_exit的值,但我不知道如何解决。
【问题讨论】:
标签: c multithreading pointers pthreads