c++ - boost 是否具有用于数组 vector 的智能指针?

标签 c++ memory-management boost

这是为了保存数据

double **a;
a = new (double*)[100];
for (int i=0; i<100; ++i) {
   a[i] = new double[99];
}

ptr_vector 可以包含一个指针 vector 。但是似乎不支持自定义删除器来释放数组。

一个解决方案是我可以创建一个管理 99 个 double 的新类,并使用 ptr_vector 来容纳 100 个类?

最佳答案

最好的方法是使用标准库std::vector让您不必担心内存管理和设置 vector 的大小。

std::vector<std::vector<double>> a;

您还可以使用 std::unique_ptr ,但是分配动态内存比较麻烦。然而,由于它是一个 std::unique_ptr 是一个智能指针,当对象析构/超出范围时,内存会自动释放。

std::unique_ptr<std::unique_ptr<double>[]> a(new std::unique_ptr<double>[100]);
  for (i=0; i <100; i++)
      a[i] = std::unique_ptr<int[]>(new int[99]);

上面的方法有效,但它违背了 std::unique_ptr 的意图,后者是为了避免使用指针和自动分配和释放内存。

关于c++ - boost 是否具有用于数组 vector 的智能指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43190358/

相关文章:

c++ - 如何使用 boost::process::child 处理路径中的空格?

c++ - 无法禁用由 Boost 库引起的警告

c++ - 在 C++ 模板类中存在循环依赖时修复包含顺序

c++ - 可变长度初始值设定项的模板

c++ - 添加 initializer_list 构造函数后静默中断构造函数调用

ios - 释放对象后的内存问题

memory-management - 有人可以向我解释有关分页(虚拟内存)的图表吗?

firebase - 由于超出内存限制,Firebase 的 Cloud Functions 函数被终止

c++ - boost 灵气 搭配多种元素

c++ - 如何每次使用不同的参数多次测试方法