Я пишу версию strcat, которая может выделять память соответственно размеру входной строки. Для этого я использую realloc.Используемая память, сообщенная Valgrind, является HUGE
Я делал несколько тестов с большим количеством строк. В некоторых тестах, объединяющих 9 193 строки, получается строка длиной 64 344. Я проверил это с Valgrind, но я обнаружил, что результаты немного тревожные ...
HEAP SUMMARY
in use at exit: 0 bytes in 0 blocks
total heap usage: 9193 allocs, 9,193 frees, 338,017,768 bytes allocated
All heap blocks were freed -- no leaks are posible
For counts of detected and suppressed errors, rerun with -v
ERROR SUMMARY: 0 Errors form 0 contexts (suppresed: 0 from 0)
программа работает хорошо и быстро благоугодно на мой взгляд, но я волнуюсь с 338,017,768 байт, выделенных сообщение, я думаю it' слишком много для простой конкатенации строк.
Что означает «выделенные байты» точно?
Спасибо.
Это означает, что в среднем вы выделили около 36 KiB за вызов 'malloc()' et al. Поскольку вы знаете, что некоторые из ассигнований были в области 64 KiB, это выглядит не так уж плохо. И вы освободили все это, поэтому вам, вероятно, не о чем беспокоиться. Как уже указывалось (по некоторым ответам), это автоматически не означает, что ваша программа выросла до 300+ MiB. –