Valgrind说由于函数ft_strdup,我在59个块中有59个字节的内存泄漏:
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个块?