В этой функции, у меня есть утечка памятиУтечки памяти в C
static int read_buffer(int const fd, char **buffer)
{
char buff[BUFF_SIZE + 1];
int ret;
ret = read(fd, buff, BUFF_SIZE);
if (ret > 0)
{
buff[ret] = 0;
if (!(*buffer = ft_strjoin(*buffer, buff)))
return (-1);
}
return (ret);
}
Я пытался сделать это и больше решения снова .. Но я получаю также утечку памяти
static int read_buffer(int const fd, char **buffer)
{
char buff[BUFF_SIZE + 1];
char *tmp;
int ret;
ret = read(fd, buff, BUFF_SIZE);
tmp = *buffer;
if (ret > 0)
{
buff[ret] = 0;
if (!(*buffer = ft_strjoin(*buffer, buff)))
return (-1);
free(tmp);
}
return (ret);
}
Здесь является функцией ft_strjoin: (не может быть изменено)
char *ft_strjoin(char const *s1, char const *s2)
{
size_t size_s1;
size_t size_s2;
char *strjoin;
size_s1 = ft_strlen(s1);
size_s2 = ft_strlen(s2);
if (!(strjoin = malloc(size_s1 + size_s2 + 1)))
return (NULL);
ft_strcpy(strjoin, s1);
ft_strcat(strjoin, s2);
return (strjoin);
}
Как я могу это решить?
Спасибо!
Не могли бы вы объяснить, что заставляет вас думать, что есть утечка памяти? Используемый инструмент также может дать вам несколько советов по этой проблеме. – kebs
@kebs Я использовал valgrind, но он вернул мне это вызвало функцию ft_strjoin –
Мне нравится отступ, но используйте некоторые фигурные скобки –