我有一个返回订阅到期日期的方法,并使用boost::posix_time::time_facet
将Unix时间格式转换为字符串。在我看到的教程中,time_facet
是使用“new”关键字创建的,但我还没有看到任何使用“delete”(like in this thread)的示例。我应该在使用time_facet
后释放内存,还是stringstream
会自动处理内存释放?下面是我的代码,它有内存泄漏吗?
nlohmann::json GetExpireDate::ExecutePayload(ClientHandle& clientHandle)
{
boost::posix_time::ptime pt = boost::posix_time::from_time_t(m_SubFromPacket.GetEndDate());
std::stringstream ss;
auto timeFacet = std::make_unique<boost::posix_time::time_facet>("%Y-%m-%d %H:%M:%S");
ss.imbue(std::locale(std::locale::classic(), timeFacet.get()));
ss << pt;
return {{ "expire_date", ss.str()}};
}
1条答案
按热度按时间7lrncoxx1#
您的代码不包含泄漏,但它确实包含双重释放。区域设置获取其第二个参数的所有权。你不能自己删除它(或者让
unique_ptr
来删除)。