码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • c++语言基础:delete和delete[]


    delete   : 用来释放new分配的单个对象指针指向的内存,
    delete[] : 用来释放new分配的对象数组指针指向的内存。

      class A
       {
       private:
          char *m_cBuffer;
          int m_nLen=1;
       public:
          A(){ m_cBuffer = new char[m_nLen]; }
          ~A() { delete [] m_cBuffer; }
       };
       A *a = new A[10];
       delete a;         //仅释放了a指针指向的全部内存空间 但是只调用了a[0]对象的析构函数 剩下的从a[1]到a[9]这9个用户自行分配的m_cBuffer对应内存空间将不能释放 从而造成内存泄漏
       delete [] a;      //调用使用类对象的析构函数释放用户自己分配内存空间并且   释放了a指针指向的全部内存空间

    如果ptr代表一个用new申请的内存返回的内存空间地址,即所谓的指针,那么:
    delete ptr 代表用来释放内存,且只用来释放ptr指向的内存。
    delete[] ptr 用来释放ptr指向的内存,还逐一调用数组中每个对象的destructor!!
    对于像int/char/long/int*/struct等等简单数据类型,由于对象没有destructor,所以用delete和delete[]是一样的!但是如果是C++对象数组就不同了

  • 相关阅读:
    力扣第20题记录
    Springboot启动流程分析(四):完成启动流程
    C/C++内存管理
    [附源码]JAVA毕业设计计算机专业在线学习评估软件-演示录像-(系统+LW)
    C语言求解猴子吃桃问题
    Python tkinter用iconphoto方法修改窗口标题的图片
    225. 用队列实现栈、232. 用栈实现队列、622. 设计循环队列
    盲盒小程序预售机制的设计与实施
    【OpenCV-Python】教程:3-16 利用Grabcut交互式前景提取
    【LeetCode刷题记录】92. 反转链表 II & 25. K 个一组翻转链表
  • 原文地址:https://blog.csdn.net/qq_51046087/article/details/125549933
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号