diff --git a/run.c b/run.c index d036ada30adb109fe0d02e4c7948a405e41f9790..33107a4d024422f5e1e59e76c66197cae0c8bcc2 100755 --- a/run.c +++ b/run.c @@ -143,6 +143,7 @@ void enqueue(queue_t* q, unsigned long long val){ } q->size++; //return q; + //free(ptr->next); free(ptr); } @@ -152,6 +153,7 @@ queue_t* prime_divs(unsigned long long number){ struct queue new_queue; new_queue.size = 0; + new_queue.final = 0; new_queue.tail = malloc(sizeof(node_t)); if(new_queue.tail==NULL){return NULL;} @@ -191,8 +193,10 @@ void *writing(void *param){ { //printf("final : %d\n",pr_divs->final); if (stop == N-1){ + free(pr_divs); return NULL; } + free(pr_divs); stop++; } else{ @@ -206,15 +210,17 @@ void *writing(void *param){ *current = *pr_divs->tail; current = current->next; - fprintf(file2,"%lld",current->value); + fprintf(file2,"%llu",current->value); current = current->next; for (int i = 1; i < pr_divs->size; i++) { - fprintf(file2," %lld",current->value); + fprintf(file2," %llu",current->value); current = current->next; } fputc('\n',file2); + + free(current); } @@ -251,6 +257,7 @@ void *calculating(void *param){ put_in_buffer_2(final,buffer_2); pthread_mutex_unlock(&mutex2); sem_post(&full2); + return NULL; } @@ -267,6 +274,10 @@ void *calculating(void *param){ pthread_mutex_unlock(&mutex2); sem_post(&full2); + + free(pr_divs->tail); + free(pr_divs); + }