我正在阅读提升DateTime库here,其中包含许多示例,例如:
time_zone_ptr zone(new posix_time_zone("MST-07"));
我很好奇为什么使用关键字'new'不会导致内存泄漏? 我调查了boost源代码,并注意到它有两个不同版本的构造函数,一个使用shared_ptr,另一个使用weak_ptr。有人可以解释这些是如何工作的,以及为什么上述行可以安全地编写?
答案 0 :(得分:7)
time_zone_ptr
只是boost::shared_ptr<time_zone>
的别名。这是一个智能指针,从构造它的原始指针获取动态分配对象的所有权。