我不时需要调用 new[]
来获取内置类型(通常是 char
)。结果是一个具有未初始化值的数组,我必须使用 memset()
或 std::fill()
来初始化元素。
如何使 new[]
默认初始化元素?
原文由 sharptooth 发布,翻译遵循 CC BY-SA 4.0 许可协议
我不时需要调用 new[]
来获取内置类型(通常是 char
)。结果是一个具有未初始化值的数组,我必须使用 memset()
或 std::fill()
来初始化元素。
如何使 new[]
默认初始化元素?
原文由 sharptooth 发布,翻译遵循 CC BY-SA 4.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 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
int* p = new int[10]()
应该做。然而,正如 迈克尔指出的那样,使用
std::vector
会更好。