如何修复 poco Poco::Net::TCPServerParams() valgrind 明确的泄漏
How to fix poco Poco::Net::TCPServerParams() valgrind definite leak
我正在使用Poco,我正在创建TCP服务器参数,如下所示: Poco::Net::TCPServerParams *pParams = new Poco::Net::TCPServerParams();
当我使用Valgring时,我得到了明确的内存泄漏: 1271 ==00:00:01:37.131 48682== 在 0x4C2903F: 运算符 new(无符号长整型) (在/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so )
at line: Poco::Net::TCPServerParams*pParams = new Poco::Net::TCPServerParams();
波科版本: DPKG -L |格雷普·波科 ii libpoco-dev 1.6.1-AVA3 amd64 C++ 便携式组件 (POCO) 开发文件 ii libpoconet31 1.6.1-AVA3 amd64 C++ 便携式组件 (POCO) 网络库
为了修复它,我在指针上使用删除,但是出现错误
delete pParams
'TCPServerParams.h:98:10: error: 'virtual Poco::Net::TCPServerParams::~TCPServerParams()' is protected'
使用TCPServerParams
的一种常见方法是它与TCPServer
一起使用。首先,您通过new
创建TCPServerParams
,然后将其传递到TCPServer
,后者拥有参数的所有权。它在 TCP 服务参考中进行了描述。
服务器还拥有 TCPServerParams 对象的所有权。
因此TCPServer
删除不需要的参数实例。
不能通过delete
手动删除TCPServerParams
,因为析构函数受到保护。
在 Poco 库中,许多类都有受保护的析构函数,它迫使您使用Poco::AutoPtr
类来管理实例的生存期。
TCPServerParams
源于RefCountedObject
。RefCountedObject
提供参考计数器机制。它具有release
方法,该方法可在AutoPtr
的生命周期结束时删除对象。
所以你可以写:
Poco::AutoPtr<Poco::Net::TCPServerParams> p(new Poco::Net::TCPServerParams());
内存由AutoPtr
自动释放。
- valgrind-hellgrind与泄漏检查的结果不同
- Valgrind 在 QThread::start() 上报告内存泄漏
- 使用 valgrind 检查我的链表暗示中的内存泄漏,让我"肯定丢失:1 个块中有 40 个字节"
- Valgrind 在 std::make_unique 中显示内存泄漏
- 使用Valgrind时内存泄漏消失
- 如何通过Valgrind找到QThreads程序中的内存泄漏在哪里?
- C++中的动态数组:Valgrind泄漏
- 为什么 Valgrind 在此实现中报告内存泄漏?
- 为什么使用 make_unique<> 将函数传递给线程会导致 Valgrind 中的内存泄漏?
- 客户端代码中的 Valgrind 钩子:特定函数的内存泄漏
- Valgrind 错误和内存泄漏与 Python/C API
- 如何修复 poco Poco::Net::TCPServerParams() valgrind 明确的泄漏
- 如何使用 Valgrind 确定内存泄漏"still-available"来源?
- Valgrind检测到OpenGL内存泄漏
- Valgrind和Qemu-无法检测到内存泄漏
- Tensorflow C 内存泄漏 - valgrind
- 如何修复Valgrind报告的C 数组驱动器中的内存泄漏
- 带有Valgrind的C 的向量分配中的内存泄漏
- 用valgrind分析c++字符内存泄漏
- Valgrind 在主机名命令输出中显示内存泄漏