C++ 指针动态内存分配

风陵南·2024-05-09 02:57·97 次阅读

C++ 指针动态内存分配

动态内存分配

  • 动态内存分配:即由程序员手动的进行内存空间的分配、内存空间的释放的内存管理操作
  • C++代码中,变量、数组等对象的创建,是由C++自动分配内存的,称之为(自动)静态内存分配
    • (自动)静态内存管理,不会进行内存空间的自动清理。(无垃圾回收机制)
    • 需要手动的管理内存,即手动分配,用完清理

new运算符#

  • 用于申请并分配内存空间并提供指向该空间的指针(内存地址)
  • 基本语法:
    • new type 申请普通变量空间
    • new type[] 申请数组空间

delete运算符#

  • 用于释放内存,仅可用于new运算符申请的内存区域
  • 基本语法:
    • delete 指针  删除普通变量空间
    • delete[] 指针 删除数组空间
  • 建议:写完new后,立刻写delete,然后再写业务逻辑代码(避免忘记)
int *pt = new int;
*pt = 10;
cout << "申请内存空间存放:" << *pt << endl;
delete pt;
cout << "pt内存空间已释放" << endl;
int *pt2 = new int[3];
pt2[0] = 1; // 指针也可以用下标, 等同于*(p+0)
*(pt2 + 1) = 2; // 等同于 pt[1]
cout << "*pt2申请内存空间大小:" << sizeof(pt2) << endl;
cout << *pt2 << endl;
cout << pt2[1] << endl;
delete[] pt2; // 释放内存空间
cout << "pt2内存空间已释放" << endl;

指针悬挂#

  • 指针指向的区域已经被delete回收,这种称为:指针悬挂
  • 如何避免:
    • 不要轻易进行指针之间相互赋值
    • delete回收空间之前,确保此空间100%不再被使用
posted @   风陵南  阅读(98)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示
目录