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);
+
 
     }