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

Why doesn't this time_zone_ptr example contain a memory leak?

本文关键字:包含 内存 泄漏 ptr time zone 为什么      更新时间:2023-10-16

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

time_zone_ptr zone(new posix_time_zone("MST-07"));

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

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