new用于动态分配内存,delete用于释放;可分配单变量、数组并初始化,需手动管理避免泄漏。

在C++中,new 和 delete 是用于动态内存分配和释放的关键字。它们允许程序在运行时从堆(heap)上申请和释放内存,相比栈上的静态或自动变量,提供了更大的灵活性。
1. new 的基本用法
使用 new 可以动态分配单个对象或对象数组的内存。分配成功后,返回指向该内存的指针。
分配单个变量:
int* p = new int; // 分配一个int类型的内存 *p = 10; // 给动态内存赋值初始化同时赋值:
立即学习“C++免费学习笔记(深入)”;
double* d = new double(3.14); // 分配并初始化分配数组:
int* arr = new int[10]; // 分配10个int的数组 for(int i = 0; i2. delete 的基本用法
使用 delete 释放由 new 分配的内存,防止内存泄漏。
释放单个对象:
delete p; // 释放单个int p = nullptr; // 建议置空,避免悬空指针释放数组:
delete[] arr; // 必须使用 delete[] 释放数组 arr = nullptr;red">注意:如果用 new[] 分配数组,必须用 delete[] 释放;否则行为未定义。
3. 常见错误与注意事项
- 忘记释放内存 → 导致内存泄漏
- 重复释放同一指针 → 程序崩溃
- 释放后继续使用指针 → 悬空指针,危险操作
- 混用 new/delete 与 new[]/delete[] → 未定义行为
建议:释放后将指针设为 nullptr,可避免误操作。
4. 示例完整代码
#include iostream>using namespace std;
int main() {
int num = new int(42);
cout num
int* arr = new int[5]{1, 2, 3, 4, 5};
for(int i = 0; i
cout
}
cout
delete num;
num = nullptr;
delete[] arr;
arr = nullptr;
return 0;
}
基本上就这些。合理使用 new 和 delete 能提升程序灵活性,但要时刻注意内存管理。现代C++更推荐使用智能指针(如 unique_ptr、shared_ptr)和容器(如 vector),减少手动管理内存的风险。










