Valgrind говорит, что у меня утечка памяти 59 байтов в 59 блоках из-за моей функции ft_strdup:
char *ft_strdup(const char *s)
{
char *dup;
int i;
i = 0;
dup = (char *)malloc((ft_strlen(s) + 1) * sizeof(char));
if (!dup)
return (NULL);
while (s[i])
{
dup[i] = s[i];
i++;
}
dup[i] = '\0';
return (dup);
}
Но когда я изменяю размер выделения на:
dup = (char *)malloc(ft_strlen(s) * sizeof(char));
Valgrind показывает мне этот результат:
==36929== definitely lost: 0 bytes in 59 blocks
==36929== indirectly lost: 0 bytes in 0 blocks
Почему 59 блоков по-прежнему отображаются вместо 0 блоков, так как не потеряно ни одного байта?