У меня есть следующий результат после использования valgrind для проверки утечек памяти.До сих пор доступная память в C
HEAP SUMMARY:
==10299== in use at exit: 2,286 bytes in 68 blocks
==10299== total heap usage: 139 allocs, 71 frees, 164,646 bytes allocated
==10299==
==10299== LEAK SUMMARY:
==10299== definitely lost: 0 bytes in 0 blocks
==10299== indirectly lost: 0 bytes in 0 blocks
==10299== possibly lost: 0 bytes in 0 blocks
==10299== still reachable: 2,286 bytes in 68 blocks
==10299== suppressed: 0 bytes in 0 blocks
==10299== Reachable blocks (those to which a pointer was found) are not shown.
==10299== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==10299==
==10299== For counts of detected and suppressed errors, rerun with: -v
==10299== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Моя цель - сделать так, чтобы утечка памяти была невозможна. Я знаю, что я должен освободить память после использования функции malloc. но даже в этом случае он все равно дает мне тот же результат. Следовательно, мне нужна помощь, чтобы увидеть, что что-то не так с моим кодированием.
ниже мой код.
struct date
{ int day;
int month;
int year;
};
Date *date_create(char *datestr)
{
//declare Date to pointer from datestr and check the data size of Date
Date *pointer = (Date *) malloc (sizeof(Date));
if(pointer!=NULL)
{
scanf(datestr,"%2d/%2d/%4d",pointer->day,pointer->month,pointer->year);
}
else
{
printf("Error! ");
date_destroy(pointer);
}
return pointer;
}
void date_destroy(Date *d)
{
free(d);
}
int main(){
return 0;
}
Является ли это на самом деле код, который вы пробежал Valgrind? Этот код ничего не делает, потому что функция 'main' просто возвращается. Поэтому трудно поверить, что valgrind создаст этот отчет для данного кода. И код определенно не завершен - 'Date' не является определенным типом. – kaylum
Отправьте MCVE. И проверьте, что 'int main() {}' не дает ошибок. –
'scanf()' -> 'sscanf()', 'Date' не определено, а ваш' main() 'ничего не делает. –