不调用 curl_multi_cleanup() 是否安全?

Is it safe to not call curl_multi_cleanup()?

我正在读这篇文章: 并决定修复该代码并改进它以便能够将其用作库。

是libcurl网页中的例子之一:https://curl.haxx.se/libcurl/c/fopen.html

我发现虽然 libcurl 文档指出这是指函数 curl_multi_init()

This init call MUST have a corresponding call to curl_multi_cleanup when the operation is complete.

示例代码永远不会调用它。

在一个程序中,很容易在 main 的末尾添加那个调用,但是对于一个库来说,要知道是否可以清理多句柄就比较困难(或者说不可能)。省略调用有效吗?

估计是内存泄漏,但不是很大,而且只有一次,不知道如何避免。


是否可以编写一个 __attribute__((destructor)) url_deinit() 函数,以便如果用户忘记调用它,无论如何都会调用它,或者资源是否会在那一刻被销毁并且生产 UB?

如果您从不清理它,您将永远不会获得分配给该句柄的内存和资源"back"。

在fopen.c例子中,multi handle是全局的,被重用,确实永远不会被释放。如果您永远不会找回记忆,那很好。

当你的程序退出时,所有的内存和资源都会被强制释放。