Что такое «Свежее хранилище» в Splint? - PullRequest
2 голосов
/ 30 января 2012

Я искал в документации Splint «свежее хранилище» и нашел упоминание об этом, но не получил формального определения.Другие модификаторы, вроде null или only, я понимаю и использую.Я просто не уверен, что такое свежее хранилище.

Ситуация такая:

void output_system_information(unsigned int frequency, unsigned int duration) { 

   unsigned int intervals = duration/frequency;                                  

   /* here I allocate some storage */                                                                              
   System * my_system = malloc(sizeof(System));                                  

   SystemInfo* current, * total;                                                 

   if (my_system == NULL) {                                                      
     fprintf(stderr, "%s\n", "Aborting: failed malloc in output_system_informatioin");
     exit(EXIT_FAILURE);                                                         
   }                                                                             

   /* and here I initialize is in that function */                                              
   init_system(my_system);      
   total = tally_system_info(frequency, duration, my_system);                    
   current = my_system->get_system_info();                                       

   /* Here I've removed a ton of print-line statements so that you don't have to see them */

   /* then the members and the struct get freed in this here dtor */
   delete_system(my_system);                                                     
   free(current);                                                                
   free(total);                                                                  

   return;                                                                       
}            

Это домашнее задание, но этот вопрос не имеет прямого отношения к домашней работе,Это сплинт-вопрос.

1 Ответ

1 голос
/ 30 января 2012

Термин свежее хранилище относится к буферу памяти, который был только что выделен для вашей программы.

Предупреждение "Свежее хранилище не освобождено" это просто особый случай «Только хранилище не освобождено» , когда буфер выделяется той же функцией, которая не может его освободить.

...