【发布时间】:2012-07-17 08:36:10
【问题描述】:
我正在运行 VC++ 2005,所以 std::unique_ptr AFAIK 不可用。我使用了一些库函数(黑匣子),它们有效地执行return new T[n],我想将结果包装在某个对象中,这意味着我不必在我的析构函数中删除它们。
大约 VC++ 2008 的标准库中是否存在任何内容?如果不是,unique_ptr 的 boost 版本会像 this answer 一样完美运行吗?
为了澄清 cmets 中的一些混淆,库函数返回一个指向动态分配数组的原始指针,我无权更改它...我需要获取该指针并将其包装在一个对象中,该对象会自动当对象超出范围时调用delete []。
【问题讨论】:
-
考虑使用
std::vector<T>。 -
它是否有一个接受指向预分配内存的指针的ctor? cplusplus.com/reference/stl/vector/vector如果你能提供一个可行的例子,答案就是你的:)
-
你可以给它一个初始大小,它是一个连续的内存块。
T的类型是什么? -
@hmjd:但它不适用于预分配的内存,因此除非您可以修改库本身,否则这不是一个真正的选择。
-
@luskan - 因为 STL/boost 的重点是我们不会继续制作自己的所有版本。
标签: c++ boost stl smart-pointers visual-c++-2005