C++ 我们应该为std::locale释放分配的资源吗

C++ 我们应该为std::locale释放分配的资源吗,c++,boost,C++,Boost,在第二个参数中,我们使用newboost::gregorian::date\u输入面(“%m/%d/%Y”) 问题:我是否需要关注释放分配的资源 谢谢您否,构造的区域设置拥有方面的所有权,并将在需要时删除它。否。需要实现来释放内存本身(除非您另有指定): 22.3.1.1.2类别locale::facet 对于refs==0,当包含facet的最后一个区域设置对象被销毁时,实现将执行delete static_cast(f)(其中f是指向facet的指针);对于refs==1,实现从不破坏方面

在第二个参数中,我们使用
newboost::gregorian::date\u输入面(“%m/%d/%Y”)

问题:我是否需要关注释放分配的资源


谢谢您

否,构造的
区域设置
拥有
方面
的所有权,并将在需要时删除它。

否。需要实现来释放内存本身(除非您另有指定):

22.3.1.1.2类别
locale::facet

对于
refs==0
,当包含facet的最后一个区域设置对象被销毁时,实现将执行
delete static_cast(f)
(其中
f
是指向facet的指针);对于
refs==1
,实现从不破坏方面


根据C++引用(STD::LoaLead,析构函数):

如果对象是最后一个区域设置对象,该区域设置对象包含它管理其存储的方面对象,则也可能会将其删除


facet的生命周期管理似乎是可配置的。C++11 22.3.1.1.2 /他说:

构造函数的
refs
参数用于生命周期管理

-对于
refs==0
,当包含facet的最后一个区域设置对象被销毁时,实现将执行
delete static_cast(f)
(其中
f
是指向facet的指针);对于
refs==1
,实现从不破坏方面

因此,在构建facet时,您可以要求使用它的
locale
项目取得(共享)所有权,也可以自己保留所有权

您必须查看Boost.Locale文档,以了解Boost语言环境如何初始化其
std::Locale::facet
base

const std::locale fmt2(std::locale::classic(),
                       new boost::gregorian::date_input_facet("%m/%d/%Y"));