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)
上一篇 2022年8月2日 下午12:46
下一篇 2022年8月2日 下午12:46


相关推荐

  • java setdaemon_Java Thread setDaemon()方法

    java setdaemon_Java Thread setDaemon()方法Thread 类的 setDaemon 方法用于将线程标记为守护程序线程或用户线程 它的生命依赖于用户线程 即当所有用户线程都消亡时 JVM 会自动终止该线程 必须在线程启动之前调用它 如果在声明线程后调用 setDaemon 方法 则此方法将抛出 IllegalThrea 语法 publicfinalv booleanon 参数 on 如

    2025年6月13日
    7
  • MFC的UDP编程实现[通俗易懂]

    MFC的UDP编程实现[通俗易懂]1、编程原理UDP是面向非连接的通信协议,比TCP协议简单很多。无论是服务器端还是客户端,其通信过程概括为:创建套接字(socket)–>绑定(bind)–>发送send(或接收recv)–>关闭套接字(closesocket) 2、特殊地址:在实际通信网络中,我们几乎不会用到“0.0.0.0″和“127.0.0.1”这样的IP地址。但是在一台计算机上,特别用于某些测试用

    2025年10月1日
    6
  • 如何使用Pip卸载软件包?

    如何使用Pip卸载软件包?PythonPipcom install update uninstallpac Wecanusepipc install PythonPip 命令提供搜索 安装 更新

    2026年3月26日
    2
  • 基于全国产算力训练,讯飞星火 X1 升级版深度推理大模型后天上线

    基于全国产算力训练,讯飞星火 X1 升级版深度推理大模型后天上线

    2026年3月14日
    1
  • 太上老君内观经

    太上老君内观经老君曰 天地媾精 阴阳布化 万物以生 承其宿业 分灵道一 父母和合 人受其生 始 一月为胞 精血凝也 二月成胎 形兆胚也 三月阳神为三魂 动而生也 四月阴灵为七魄 静镇形也 五月 五行分藏以安神也 六月 六律定腑用滋灵也 七月 七精开窍 通光明也 八月 八景神具 降真灵也 九月 宫室罗布 以定精也 十月气足 万象成也 元和哺食 时不停也 nbsp 太一帝君在头 曰泥丸君 总众神也 照生识神

    2026年3月19日
    2
  • kafuka资料学习

    kafuka资料学习http://blog.csdn.net/hmsiwtv/article/details/46960053

    2022年4月30日
    32

发表回复

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

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