Задать вопрос
Allepta
@Allepta

Почему valgrind показывает утечки при работе с libcurl?

Приветствую, столкнулся с такой странной ситуацией, что при простом использование libcurl - valgrind находит кучу утечек памяти. Вот код:

void doCurl()
{
	CURL *curl;
	CURLcode res;
	
	curl = curl_easy_init();
	if(curl)
	{
		curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
		curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
		res = curl_easy_perform(curl);

		if(res != CURLE_OK)
			fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
		
		curl_easy_cleanup(curl);
	}
}

int main(void)
{
	doCurl();
	return 0;
}


Вот вывод валгринда:
https://pastebin.com/nkVWWh0Y

Находил материалы в сети, что на это не нужно обращать внимание, но в более крупном приложение таких ошибок может быть овер 1000000 и из-за этого просто невозможно искать утечки памяти.

Заметил что на дебиане 9-10 такой проблемы нет, видимо из-за использования более старого ПО.
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
TheRonCronix
@TheRonCronix
Ну, я так понимаю, что в интернете уже искали. Там сказано, что создается глобальное состояние и его тоже нужно закрывать дполнительно помимо вызова curl_easy_cleanup.

+ см исходник https://github.com/curl/curl/blob/master/lib/easy.c Там как раз и видно, что curl_easy_init еще и глобальное состояние инициализирует если оно не инициализировано.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы