【发布时间】:2012-03-26 16:50:02
【问题描述】:
如何将 std::shared_ptr 用于双精度数组?此外,使用 shared_ptr 的优点/缺点是什么。
【问题讨论】:
-
您不要将
std::shared_ptr用于动态分配的数组,它不会调用正确的delete。你可能想要std::vector<double>。 -
@birryree:从技术上讲,如果共享所有权语义对您很重要,您可以选择 std::shared_ptr<:vector>>。或者 Boost 的 shared_array。例如看这个问题:stackoverflow.com/questions/6796655/…
-
@StuartGolodetz - 关于所有权语义的要点。 piyush314 必须知道
shared_array是一个 Boost 构造(非标准),如果他真的非常想要一个原始分配的数组,他可以为指针删除器使用std::default_delete<T[]>参数,如下所示:std::shared_ptr<double> name(new double[size], std::default_delete<double[]>());。 -
确实——我只是在你写的时候添加了“Boost”:)
标签: c++ shared-ptr