📜  在 C++ 中释放数组(1)

📅  最后修改于: 2023-12-03 15:37:18.744000             🧑  作者: Mango

在 C++ 中释放数组

在 C++ 中,当我们使用 new 关键字动态分配数组内存时,我们也需要使用 delete[] 关键字来释放已分配的内存。下面是释放数组内存的几种方法。

方法一:使用delete[]关键字释放内存

我们可以使用 delete[] 关键字来释放已分配的内存,例如:

// 分配包含5个整数的数组内存
int* arr = new int[5];

// 使用数组
// ...

// 释放内存
delete[] arr;

这个代码片段展示了在创建包含5个整数的动态数组时,如何使用 delete[] 释放该数组。

方法二:将内存封装在 smart pointer 中

要避免由于程序员错误而造成的内存泄漏和悬空指针,我们可以把内存的管理委派给一个智能指针。以下是包含5个整数的数组封装在 std::unique_ptr 中的示例:

#include <memory>

std::unique_ptr<int[]> arr(new int[5]);

这个示例将数组 arr 封装在 std::unique_ptr 中,它会在其超出作用域时自动释放内存。

方法三:使用std::vector

在 C++ 中,std::vector 是一个非常有用的类,它用于在运行时管理可变大小的数组。它还提供了许多方便的方法来访问和修改数组。

以下是使用 std::vector 来分配和释放包含5个整数的数组的示例:

#include <vector>

std::vector<int> arr(5);
// 使用数组
// ...

// 不需要手动释放内存

这个示例展示了如何在运行时使用 std::vector 分配和管理包含5个整数的数组,而不必担心手动释放内存。

总结

以上是在 C++ 中释放数组内存的三种方法。可能你会发现,在使用智能指针或std::vector时更容易避免内存泄漏和悬空指针的问题。