C++中动态数组通过new在堆上分配内存,delete[]释放,大小可在运行时确定;需配对使用new[]与delete[],避免内存泄漏和未定义行为;推荐优先使用std::vector实现自动内存管理。

在C++中,动态数组是通过 new 和 delete 操作符在堆(heap)上分配和释放内存来实现的。相比静态数组,动态数组的大小可以在程序运行时确定,更加灵活。
要定义一个动态数组,使用 new 数据类型[大小] 的语法:
int* arr = new int[n]; // 创建一个长度为 n 的整型动态数组
说明:
new int[n] 在堆上分配能存储 n 个 int 类型数据的内存空间。int* 类型)。示例:
立即学习“C++免费学习笔记(深入)”;
#include <iostream>
using namespace std;
<p>int main() {
int size;
cout << "输入数组大小: ";
cin >> size;</p><pre class='brush:php;toolbar:false;'>int* arr = new int[size]; // 动态分配数组
// 赋值
for (int i = 0; i < size; ++i) {
arr[i] = i * 2;
}
// 输出
for (int i = 0; i < size; ++i) {
cout << arr[i] << " ";
}
cout << endl;
delete[] arr; // 释放内存
return 0;}
使用完动态数组后,必须手动释放内存,避免内存泄漏。释放动态数组要用 delete[]:
delete[] arr; // 正确:释放整个数组
注意:
new 分配,用 delete 释放;new[] 分配,必须用 delete[] 释放。分配单个变量:
int* p = new int; // 分配一个int *p = 10; delete p; // 释放
分配数组:
double* darr = new double[100]; // 分配100个double // ... 使用 ... delete[] darr; // 必须加 []
delete[] arr; arr = nullptr; // 避免悬空指针
虽然 new/delete 是基础技能,但在现代C++中,更推荐使用 std::vector 来代替动态数组:
#include <vector> std::vector<int> vec(size); // 自动管理内存,支持动态扩容
优点:
基本上就这些。掌握 new 和 delete 是理解C++内存管理的基础,但实际开发中优先考虑 vector 等标准容器。不复杂但容易忽略的是:配对使用 new[]/delete[],别忘了释放。
以上就是c++++ 动态数组怎么定义 c++ new delete用法教程的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号