Я читал это: { ссылка } и решил исправить этот код и улучшить его, чтобы можно было использовать его в качестве библиотеки.
Это один из примеров в Веб-страница libcurl: https://curl.haxx.se/libcurl/c/fopen.html
Я обнаружил, что, хотя документация libcurl гласит это, ссылаясь на функцию curl_multi_init()
:
Этот вызов инициализации ДОЛЖЕН иметь соответствующий вызов curl_multi_cleanup после завершения операции.
пример кода не вызывает его, никогда.
В программе он может было бы легко добавить этот вызов в конце основного, но для библиотеки труднее (или, возможно, невозможно) узнать, можно ли очистить мульти дескриптор. Допустимо ли опускать вызов?
Я полагаю, что это утечка памяти, но не очень большая, и это только один раз, и я не знаю, как ее избежать.
Можно ли написать функцию __attribute__((destructor))
url_deinit()
, чтобы, если пользователь забудет ее вызвать, она все равно будет вызвана, или ресурсы уже будут уничтожены в этот момент и вызовут UB?