首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复poco Poco::Net::TCPServerParams()

如何修复poco Poco::Net::TCPServerParams()
EN

Stack Overflow用户
提问于 2019-05-22 22:34:31
回答 1查看 133关注 0票数 0

我使用Poco并创建TCP服务器params如下: Poco::Net::TCPServerParams *pParams = new::Net::TCPServerParams();

当我使用Valgring时,我得到了明确的内存泄漏: 1271 ==00:00:01:37.131 48682== at 0x4C2903F: operator new(无符号长)(在==00:00:01:37.131中)

一行: Poco::Net::TCPServerParams *pParams = new::Net::TCPServerParams();

poco版本: dpkg -l x grep Poco ii libpoco-dev 1.6.1-AVA3 3 amd64 C++便携组件(POCO)开发文件ii libpoconet31 1.6.1-AVA3 amd64 C++便携组件(POCO)网络库

为了修复它,我在指针上使用了delete,但是我得到了一个错误。

delete pParams

'TCPServerParams.h:98:10:错误:‘虚拟TCPServerParams.h:98:10受保护’

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-23 04:52:59

使用TCPServerParams的一个常见方法是它与TCPServer一起工作。首先,通过TCPServerParams通过new创建new,然后将其传递给TCPServer,后者获取对参数的所有权。它在TCPServer参考文献中进行了描述。

服务器还拥有TCPServerParams对象的所有权。

因此,TCPServer删除不必要的param实例。

您不能手动删除TCPServerParams,因为析构函数是受保护的。

在Poco库中,许多类都保护析构函数,它迫使您使用Poco::AutoPtr类来管理实例的生存期。

TCPServerParams来源于RefCountedObjectRefCountedObject提供了参考计数器机制。它有release方法,当AutoPtr的生存期结束时,它会删除一个对象。

这样你就可以写:

代码语言:javascript
复制
Poco::AutoPtr<Poco::Net::TCPServerParams> p(new Poco::Net::TCPServerParams());

内存由AutoPtr自动释放。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56265840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档