gpt4 book ai didi

c - 不调用curl_multi_cleanup()是否安全?

转载 作者:行者123 更新时间:2023-11-30 14:32:17 25 4
gpt4 key购买 nike

我正在读这个:https://stackoverflow.com/a/26648931/6872717并决定修复该代码并对其进行改进,以便能够将其用作库。

这是 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.

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

在程序中,在主程序末尾添加该调用可能很容易,但对于库来说,要知道是否可以清理多句柄会更困难(或者可能不可能)。省略调用是否有效?

我猜这会构成内存泄漏,但不是很大,而且只有一次,而且我不知道如何避免。

<小时/>

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

最佳答案

如果您从不清理它,您将永远无法“取回”与该句柄相关的分配的内存和资源。

在 fopen.c 示例中,多句柄是全局的并且被重用,并且实际上永远不会被释放。如果你不介意永远无法恢复内存,那也没关系。

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

关于c - 不调用curl_multi_cleanup()是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59896586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com