我的C ++应用程序使用libevent的HTTPS实现与安全服务进行通信。
在每个请求之后,堆内存的使用量增加。据我了解,OpenSSL BIO无法清除。但是bufferevent
是使用选项BEV_OPT_CLOSE_ON_FREE
创建的。
文档说SSL套接字不会自动关闭,所以我在释放evhttp_connection
时手动这样做:
bufferevent *bev = evhttp_connection_get_bufferevent(evconn);
SSL *ssl = bufferevent_openssl_get_ssl(bev);
SSL_set_shutdown(ssl, SSL_RECEIVED_SHUTDOWN);
while(SSL_shutdown(ssl) == 0);
if(evconn != nullptr)
evhttp_connection_free(evconn);
但是内存没有释放。
如果我未将bufferevent
定义为连接,则一切正常。
有没有办法解决这个问题?