我编写了一个类,它必须与一些需要一些 C 样式数组(或至少指向第一个元素的指针)作为参数的旧代码交互。
这些数组是我班级的成员,它们特别大(50kb),所以我想把它们放在堆上,这样我班级的对象在堆栈上就不会很大。我非常相信使用资源管理对象,所以我宁愿自己不在堆上管理这些数组。
我发现使用 unique_ptr 的效果特别好。例如:
std::unique_ptr<SOMETYPE[]> someArrayName
并使用:
someArrayName(new SOMETYPE[someLargeSize])
在我的构造函数的初始化列表中。这使我可以将这些用作常规 C 数组,使用.get()
需要将其作为参数的函数的方法,而我不必自己管理内存。但我刚刚意识到我的同事(实际为发布编译我们的代码的人)仍在使用 VS2008,显然缺乏对 C++0x 特性(如unique_ptr
. 首先,我当前使用 unique_ptr 的解决方案是一个好的解决方案吗?如果是这样,是否有替代品来维持我需要的所有行为,比如提升?