动态内存管理:从基础到实战详解

张开发
2026/4/17 20:40:36 15 分钟阅读

分享文章

动态内存管理:从基础到实战详解
一、为什么需要动态内存普通数组长度固定定义时必须确定大小程序运行时才知道需要多大空间 → 必须用动态内存动态内存从堆区申请手动申请、手动释放作用按需申请内存不浪费可创建变长数组对象动态创建后面类与对象会大量用到二、new /delete 基本用法1. 申请单个变量// 申请 int 类型内存 int *p new int; // 赋值 *p 10; cout *p endl; // 释放 delete p; // 释放后置空避免野指针 p nullptr;2. 申请并初始化int *p new int(100); cout *p; // 100三、动态数组最常用1. 创建动态数组// 申请存放 5 个 int 的数组 int *arr new int[5];2. 赋值与访问arr[0] 10; arr[1] 20; cout arr[0]; // 103. 释放动态数组⚠️ 数组必须用delete[]不能用deletedelete[] arr; arr nullptr;四、完整示例动态创建数组并遍历#include iostream using namespace std; int main() { int n; cout 请输入数组长度; cin n; // 动态申请数组 int *arr new int[n]; // 赋值 for (int i 0; i n; i) { arr[i] i 1; } // 遍历输出 for (int i 0; i n; i) { cout arr[i] ; } cout endl; // 释放数组 delete[] arr; arr nullptr; system(pause); return 0; }五、内存区域简单区分表格区域存放内容分配释放栈区局部变量、数组自动分配、自动释放堆区new 出来的内存手动 new /delete栈区自动管理不用操心堆区必须自己释放否则内存泄漏六、malloc /free 与 new /delete 区别简单了解malloc / freeC 语言函数只分配内存不调用构造 / 析构函数new / deleteC 关键字分配内存 初始化会调用构造 / 析构写 C 优先用new / delete七、新手高频易错点必看动态数组用 delete 释放应该用 delete []int *arr new int[5]; delete arr; // 错误会内存泄漏内存释放后没有置空变成野指针重复释放同一块内存只 new 不 delete →内存泄漏访问越界导致程序崩溃八、今日重点总结动态内存从堆区申请用new创建delete释放单个变量int *p new int(10); delete p;动态数组int *arr new int[n]; delete[] arr;释放后指针必须置空 nullptrnew/delete 必须配对使用防止内存泄漏

更多文章