如何使\`new \[\]\`默认初始化原始类型数组?

新手上路,请多包涵

我不时需要调用 new[] 来获取内置类型(通常是 char )。结果是一个具有未初始化值的数组,我必须使用 memset()std::fill() 来初始化元素。

如何使 new[] 默认初始化元素?

原文由 sharptooth 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 354
2 个回答

int* p = new int[10]() 应该做。

然而,正如 迈克尔指出的那样,使用 std::vector 会更好。

原文由 sbi 发布,翻译遵循 CC BY-SA 3.0 许可协议

为什么不直接使用 std::vector?它会自动为您做到这一点。

std::vector<int> x(100); // 100 个整数,值为 0
std::vector<int> y(100,5); // 100 个整数,值为 5

同样重要的是要注意使用向量更好,因为数据将被可靠地破坏。如果你有一个 new[] 语句,然后随后抛出异常,分配的数据将被泄露。如果您使用 std::vector,则将调用该向量的析构函数,从而正确释放数据。

原文由 Michael Aaron Safyan 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题