为什么这个time_zone_ptr示例不包含内存泄漏?

her*_*101 4 c++ timezone datetime boost weak-ptr

我正在阅读这里的boost DateTime库,其中包含许多示例,例如:

time_zone_ptr zone(new posix_time_zone("MST-07"));
Run Code Online (Sandbox Code Playgroud)

我很好奇为什么使用关键字'new'不会导致内存泄漏?我调查了boost源代码,并注意到它有两个不同版本的构造函数,一个使用shared_ptr,另一个使用weak_ptr.有人可以解释一下这些是如何工作的,为什么上面这行可以安全写?

Ker*_* SB 7

time_zone_ptr只是一个别名boost::shared_ptr<time_zone>.这是一个智能指针,从构造它的原始指针获取动态分配的对象的所有权.