c++ 我应该在使用boost::posix_time::time_facet时释放内存吗

2q5ifsrm  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(226)

我有一个返回订阅到期日期的方法,并使用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()}};
}
7lrncoxx

7lrncoxx1#

您的代码不包含泄漏,但它确实包含双重释放。区域设置获取其第二个参数的所有权。你不能自己删除它(或者让unique_ptr来删除)。

相关问题