curl curl_global_init утечка памяти
#include <curl/curl.h>
#include <mcheck.h>
int main(int argc, char** argv)
{
setenv("MALLOC_TRACE", "output", 1);
mtrace();
curl_global_init(CURL_GLOBAL_ALL);
curl_global_cleanup();
return 0;
}
gcc -o test test.c -lcurl
./тестовое задание
вывод mtrace
- 0x000000000154f010 Free 6293 was never alloc'd 0x7f9a4e515256
- 0x000000000154f040 Free 6294 was never alloc'd 0x7f9a4e4a299d
- 0x000000000154f060 Free 6295 was never alloc'd 0x7f9a4e51540c
Memory not freed:
Address Size Caller
0x000000000154f830 0x258 at 0x7f9a4d303134
0x000000000154fa90 0xb0 at 0x7f9a4d303134
0x000000000154fb50 0x80 at 0x7f9a4d303134
0x000000000154fbe0 0x18 at 0x7f9a4d303134
0x0000000001568ca0 0x20 at 0x7f9a4d303134
0x0000000001568cd0 0x20 at 0x7f9a4d303134
Что может быть причиной этой утечки памяти?
1 ответ
Поздний ответ, но я сам столкнулся с той же проблемой. Если libcurl связан с поддержкой openssl, вы должны вручную освободить ресурсы openssl.
#include "openssl/conf.h"
#include "openssl/err.h"
#include "openssl/engine.h"
#include "openssl\ssl.h"
CONF_modules_free();
ERR_remove_state(0);
ENGINE_cleanup();
CONF_modules_unload(1);
ERR_free_strings();
EVP_cleanup();
CRYPTO_cleanup_all_ex_data();
sk_SSL_COMP_free(SSL_COMP_get_compression_methods());
Сделал трюк для меня