C++中delete函数的具体使用

 更新时间:2023年03月09日 14:34:02   作者:SuperYue37  
本文主要介绍了C++中delete函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在C++中delete函数用于回收new分配的内存空间。

C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。

关于 new[] 和 delete[],其中又分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。

在针对简单的基本数据类型,使用delete也可以回收 new[] 分配的一组对象的内存空间,因为:基本的数据类型对象没有析构函数,并且new 在分配内存时会记录分配的空间大小,则delete时能正确释放内存,无需调用析构函数释放其余指针。因此两种方式均可。

但是在对于自定义类型的时候,使用new[] 分配的一组对象的内存空间最好还是要用delete[]回收。

例:

#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 << p1 << endl;                            //输出P1的地址
  //  delete[] p1;
  delete p1;
 
  T* p2 = new T[NUM];
  cout << p2 << endl;                                    //输出P2的地址
  delete[] p2;
  return 0;
}

结果:

可以看到在使用delete回收p1时,析构函数只调用了一次,也就是p1[0]的析构函数,使用delete[]回收p2时,析构函数全部调用了。

所以如果在分配时使用new[],回收时最好用delete[]。

到此这篇关于C++中delete函数的具体使用的文章就介绍到这了,更多相关C++ delete函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++ LeetCode0547题解省份数量图的连通分量

    C++ LeetCode0547题解省份数量图的连通分量

    这篇文章主要为大家介绍了C++ LeetCode0547题解省份数量图的连通分量示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • C语言中二级指针的实例详解

    C语言中二级指针的实例详解

    这篇文章主要介绍了C语言中二级指针的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握理解二级指针的知识,需要的朋友可以参考下
    2017-10-10
  • 帮VS2019 找回丢失的 SDK问题

    帮VS2019 找回丢失的 SDK问题

    最近很多朋友向小编求助在机器上的 vs2019 编译 C++ 工程报错问题,今天小编给大家分享帮VS2019 找回丢失的 SDK问题,感兴趣的朋友一起看看吧
    2020-05-05
  • C++实现通讯录管理系统

    C++实现通讯录管理系统

    这篇文章主要为大家详细介绍了C++实现通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • C语言中pthread_create函数实现向线程函数传递参数

    C语言中pthread_create函数实现向线程函数传递参数

    本文主要介绍了C语言中pthread_create函数实现向线程函数传递参数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • C语言实现扫雷游戏小项目

    C语言实现扫雷游戏小项目

    这篇文章主要为大家详细介绍了C语言实现扫雷游戏小项目,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 基于C++实现俄罗斯方块游戏的示例代码

    基于C++实现俄罗斯方块游戏的示例代码

    俄罗斯方块(Tetris)是一款风靡全球的经典益智游戏,自1984年首次发布以来,便吸引了无数玩家,在这篇博文中,我们将深入探讨如何用 C++ 编写一个简单的俄罗斯方块游戏,我们将从游戏的基本概念和设计入手,逐步实现游戏的各个功能模块,感兴趣小伙伴快来看看吧
    2024-11-11
  • C++递归实现选择排序算法

    C++递归实现选择排序算法

    大家好,本篇文章主要讲的是C++递归实现选择排序算法,感兴趣的同学赶快来看一看吧对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Clion配置opencv开发环境的详细过程

    Clion配置opencv开发环境的详细过程

    这篇文章主要介绍了Clion配置opencv开发环境的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考的下
    2022-04-04
  • C++四种cast使用详细介绍

    C++四种cast使用详细介绍

    本文主要介绍了C++四种cast使用详细介绍,今天我们要来讲的是显式类型转换,C++提供了四种显式类型转换,分别是:static_cast、dynamic_cast、const_cast、reinterpret_cast,感兴趣的可以了解一下
    2022-07-07

最新评论