C++动态数组
时间: 2025-04-22 12:52:22 浏览: 17
### C++ 中动态数组的使用方法
在C++中,动态数组允许程序员在运行时指定数组的大小。这通过`new`操作符来实现内存分配,并由`delete`操作符负责清理不再使用的资源。
#### 定义与初始化
当需要创建一个动态数组时,可以利用`new`关键字配合所需的数据类型以及方括号内的尺寸说明:
```cpp
#include <iostream>
int main() {
int size = 5;
// 创建并初始化动态数组
int* arr = new int[size];
for (int i = 0; i < size; ++i) {
arr[i] = i * 10;
}
```
这段代码展示了如何声明一个整型指针变量`arr`指向新分配的一段连续存储空间,该段空间足以容纳五个整数[^1]。
#### 访问元素
一旦成功创建了一个动态数组,就可以像访问常规静态数组那样读取或修改其中任何一个位置上的值:
```cpp
// 打印动态数组的内容
for (int i = 0; i < size; ++i) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
```
这里遍历了整个数组并将每个元素打印出来。
#### 清理资源
为了避免内存泄漏,在完成对动态数组的操作之后应当及时释放所占用的空间:
```cpp
// 释放动态数组占据的内存
delete[] arr;
return 0;
```
注意这里的`delete[]`语法用于指示编译器这是一个针对数组对象而非单个对象的删除请求[^2]。
#### 可变长度支持
如果希望能够在程序执行期间改变数组的实际容量,则可以通过重新分配更大或者更小的新区域,并将旧数据复制过去的方式来达成目的;不过这种做法较为复杂且容易出错,因此通常建议采用标准库容器类如`vector<int>`作为替代方案[^3]。
#### 使用 `malloc()` 和 `free()`
除了上述基于运算符的方式外,还可以借助于C风格函数`malloc()`来进行低级别的内存管理:
```cpp
#include <cstdlib> // 包含 malloc(), free()
...
int *arr = static_cast<int*>(malloc(5 * sizeof(int)));
if (!arr) {
// 处理错误情况...
}
// 初始化和使用...
free(arr);
arr = nullptr; // 防止悬挂指针
```
这种方式虽然提供了更大的灵活性但也增加了编程难度,尤其是在处理异常安全性和边界条件方面[^4]。
阅读全文
相关推荐















