动态内存管理:从基础到实战详解
一、为什么需要动态内存普通数组长度固定定义时必须确定大小程序运行时才知道需要多大空间 → 必须用动态内存动态内存从堆区申请手动申请、手动释放作用按需申请内存不浪费可创建变长数组对象动态创建后面类与对象会大量用到二、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 必须配对使用防止内存泄漏
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2527809.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!