news 2026/4/17 20:40:33

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
动态内存管理:从基础到实战详解

一、为什么需要动态内存?

  • 普通数组:长度固定,定义时必须确定大小
  • 程序运行时才知道需要多大空间 → 必须用动态内存
  • 动态内存从堆区申请,手动申请、手动释放

作用:

  • 按需申请内存,不浪费
  • 可创建变长数组
  • 对象动态创建(后面类与对象会大量用到)

二、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]; // 10

3. 释放动态数组

⚠️ 数组必须用delete[],不能用delete

delete[] 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 / free:C 语言函数,只分配内存,不调用构造 / 析构函数
  • new / delete:C++ 关键字,分配内存 + 初始化,会调用构造 / 析构
  • 写 C++ 优先用:new / delete

七、新手高频易错点(必看)

  1. 动态数组用 delete 释放(应该用 delete [])
    int *arr = new int[5]; delete arr; // 错误!会内存泄漏
  2. 内存释放后没有置空,变成野指针
  3. 重复释放同一块内存
  4. 只 new 不 delete →内存泄漏
  5. 访问越界,导致程序崩溃

八、今日重点总结

  1. 动态内存从堆区申请,用new创建,delete释放
  2. 单个变量:
    int *p = new int(10); delete p;
  3. 动态数组:
    int *arr = new int[n]; delete[] arr;
  4. 释放后指针必须置空 nullptr
  5. new/delete 必须配对使用,防止内存泄漏
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 20:40:32

用Python和MATLAB搞定CCA:从数据预处理到结果可视化的完整实战指南

Python与MATLAB双平台实战&#xff1a;典型相关分析(CCA)全流程解析 在金融风控、基因表达分析和工业过程监控等领域&#xff0c;我们常常需要研究两组高维变量之间的关联关系。典型相关分析(CCA)作为多元统计的经典方法&#xff0c;能够揭示变量组间的深层关联模式。本文将带您…

作者头像 李华
网站建设 2026/4/17 20:38:40

文墨共鸣项目实践:基于.NET框架构建企业级知识管理智能门户

文墨共鸣项目实践&#xff1a;基于.NET框架构建企业级知识管理智能门户 最近和几个做企业级应用开发的朋友聊天&#xff0c;大家普遍有个头疼的问题&#xff1a;公司内部的知识文档越堆越多&#xff0c;技术手册、会议记录、项目报告&#xff0c;全都散落在不同的系统里。新员…

作者头像 李华
网站建设 2026/4/17 20:34:29

告别数据线束缚:QCMA,你的PS Vita内容管理智能助手

告别数据线束缚&#xff1a;QCMA&#xff0c;你的PS Vita内容管理智能助手 【免费下载链接】qcma Cross-platform content manager assistant for the PS Vita 项目地址: https://gitcode.com/gh_mirrors/qc/qcma 你是否曾经为PS Vita繁琐的数据传输而烦恼&#xff1f;想…

作者头像 李华
网站建设 2026/4/17 20:34:28

Excel公式美化器:终极免费工具,让复杂公式一目了然!

Excel公式美化器&#xff1a;终极免费工具&#xff0c;让复杂公式一目了然&#xff01; 【免费下载链接】ExcelFormulaBeautifier Excel Formula Beautifer,make Excel formulas more easy to read,Excel公式格式化/美化,将Excel公式转为易读的排版 项目地址: https://gitcod…

作者头像 李华