c++中delete什么意思_delete和delete()

c++中delete什么意思_delete和delete()一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。C++告诉我们在回收用new分配的单个对象的内存空间的时候用delet

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

    一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。

    C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。
关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。

请看下面的程序。

 

#include <iostream>;
using namespace std;

class T {
public:
  T() { cout << "constructor" << endl; }
  ~T() { cout << "destructor" << endl; }
};

int main()
{
  const int NUM = 3;

  T* p1 = new T[NUM];
  cout << hex << p1 << endl;
  //  delete[] p1;
  delete p1;

  T* p2 = new T[NUM];
  cout << p2 << endl;
  delete[] p2;
}
     

 

大家可以自己运行这个程序,看一看 delete p1 和 delete[] p1 的不同结果,我就不在这里贴运行结果了。


    从运行结果中我们可以看出,delete p1 在回收空间的过程中,只有 p1[0] 这个对象调用了析构函数,其它对象如 p1[1]、p1[2] 等都没有调用自身的析构函数,这就是问题的症结所在。如果用 delete[],则在回收空间之前所有对象都会首先调用自己的析构函数。
    基本类型的对象没有析构函数,所以回收基本类型组成的数组空间用 delete 和 delete[] 都是应该可以的;但是对于类对象数组,只能用 delete[]。对于 new 的单个对象,只能用 delete 不能用 delete[] 回收空间。
    所以一个简单的使用原则就是:new 和 delete、new[] 和 delete[] 对应使用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167509.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • W25Q128FV译文(二)

    该文章包括W25Q128FV译文的第7章状态寄存器翻译及第八章指令部分翻译链接,第1章至第六章翻译链接:https://blog.csdn.net/z123canghai/article/details/88700489第八章指令剩余部分及第九章相关时序翻译链接:https://blog.csdn.net/z123canghai/article/details/88727413目录…

    2022年4月6日
    46
  • WinForm输入网址打开源码

    无聊练习一下WinForm,输入网址,点击按钮就在浏览器打开网址。源代码下载:http://hovertree.com/h/bjaf/cao15h74.htm

    2021年12月22日
    46
  • es6类型转换_单片机ad转换原理

    es6类型转换_单片机ad转换原理babelES6转换ES5实现原理

    2022年9月24日
    2
  • Python 京东抢购茅台脚本(亲测可用),github脚本24小时内删除

    Python 京东抢购茅台脚本(亲测可用),github脚本24小时内删除(脚本下载见文末)前两天看到有大佬在Github上开源了一个抢茅台的脚本(https://github.com/huanghyw/jd_seckill),目前已经7.7k,我前一天看的时候才1kstar,是真的火起来了。可惜,火之前:火之后:作者已经删了,多亏我本地还存了一份,不少我的读者通过此代码也抢到了茅台。所以打算还是再分享出来,限时24小时删除,仅供大家学习交流!仅供大家学习交流!仅供大家学习交流!手慢无!!!如何下载?关注我的个人公号【快学Python】回复“

    2022年6月29日
    98
  • Nexus 3的搭建和简单使用介绍

    搭建Nexus 3私服一、简介nexus 私服间于本地仓库和中央仓库直接。1、有两种安装方式:使用tomcat启动,Tgz使用自带的Jetty启动 ,zip包(推荐使用)2、下载地址 : Nexus oss3、环境准备: jdk8+ + maven3+二、安装步骤1、windos上安装– nexus 2.x 版本1、将bin添加到环境变量中,nexus2、修改/bin…

    2022年2月27日
    55
  • CTK Plugin Framework 基本原理

    CTK Plugin Framework 基本原理“CTKPluginFramework技术是面向C++的动态模型系统。该系统允许插件之间的松散耦合,并且提供了设计良好的方式来进行功能和数据…

    2022年5月25日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号