今天重点说的是delete的一个小区别~~~

c++中对new申请的内存释放方式有delete和delect[]两种方式,那么这两种方式具体该怎么理解呢?

我们都知道,在c++中用new分配内存,用delect释放内存;使用new[]分配内存,就用delete[]释放内存。具体来讲就是delect释放new分配的单个对象指针指向的内存,delete[]释放new分配的对象数组指针指向的内存。


首先给大家先介绍下new和delete的一些基础用法:

一、new

 new 数据类型 ;                  //申请内存空间。new 数据类型   (初值);          //申请内存空间时,并指定该数据类型的初值。new 数据类型   [内存单元个数];    //申请多个内存空间。new 数据类型   [内存单元个数]();  //只能初始化为零

二、 delete

int* p3 = new int;delete p;       //释放空间与资源int* p2 = new int[10];delete []p2;   //"[]"代表长度并开辟内存

接下来我们一起来看段代码,来区别今天主要的内容delete和delete[]:


class Test
{
public:Test(int a = 0) :ma(a){std::cout << "Test::Test(int)" << std::endl;}~Test(){std::cout << "Test::~Test()" << std::endl;}
private:int ma;
};int main()
{   Test* p = new Test;       //第一种delete p;//Test* p = new Test[10]; //第二种//delete []p;return 0;
}

如果运行第一种结果会是:

如果运行第二种结果是:

总结:所以我们也可以看出来第一种的new和delete只调用一次构造和析构,而第二种的new和delete是调用十次,这也是我们做题时候会遇到的一个考点。

c++中动态申请空间的它们——new和delete相关推荐

  1. C++ 动态申请空间

    目录 C中的动态申请空间 C++动态申请空间 new一个整型 申请空间的同时,给定初始化值 new 数组 返回的是首元素的首地址 释放数组空间时,不管是几维数组,只需要在指针前加一个[] new 整型 ...

  2. 什么是指针以及如何动态申请空间

    int a;int *p;第一个比较熟悉,就是定义一个整型变量.第二个就是定义了一个整型指针变量p: 1.指针有什么作用? 指针是存储一个地址!注意是地址,不是什么具体的数值. 2.指针如何才能存储变 ...

  3. 关于C/C++动态申请空间释放和内存泄漏问题介绍

    1. 动态申请空间 1.1 基本内容 Ⅰ 动态申请的空间没有具体名称,只能通过指针间接访问(无论new还是malloc方式). Ⅱ 动态申请空间都是存放在堆中,有别于系统自动分配的空间是存放在堆栈中( ...

  4. 走进C++程序世界-----指针(动态申请空间和释放空间)

    使用关键字NEW分配内存 在讲解分配内存之前,首先来理解下内存区划分.内存分配.常量存储区.堆.栈.自由存储区.全局区这些也是初学者容易混淆的地方.我的博客中有一篇文章描述C语言中代码分配情况,点击链 ...

  5. C/C++动态申请空间方式

    C语言中用malloc/free: C++里用new/delete; 1:C语言动态申请一维数组: #include<stdio.h> #include<stdlib.h> i ...

  6. C语言如何动态申请空间(一维和二维)

    C语言如何动态申请一维和二维空间呢? 这里有个小例子,看过后就很容易理解 编译环境为vs2013 #include <stdio.h> #include <stdlib.h> ...

  7. C/C++动态申请空间

    C语言中用malloc/free: C++里用new/delete; 1:C语言动态申请一维数组: #include<stdio.h> #include<stdlib.h> i ...

  8. 【C语言】动态申请空间

    在很多情况下,我们不知道所要建立数组的大小,而是想根据需求动态的建立数组.但是通常使用 int arr[n] 这样的写法编译器会报错,因为n是变量. int n = 10; int array[n]; ...

  9. linux c中动态申请二维数组,Linux C 编程详解第五篇:二维数组

    二维数组 : 存储类型 数据类型 数组名[行数][列数] 列数不能够省略 , 行数可以省略 数组元素的引用 : 数组名[行标][列标] 练习 : 1.找出二维数组中的最大值, 如果有多个最大值, 找出 ...

最新文章

  1. linux与windos 设置 tomcat 内存
  2. [译] 曝光!UX 行话大全
  3. 洛谷P4768 [NOI2018]归程 [可持久化并查集,Dijkstra]
  4. 惊现漏洞门!大众汽车被曝安全风险,1分钟内即可轻易解锁
  5. elasticsearch aggregations_elasticsearch 笔记三 之聚合查询之分组计数、平均数、最大值、script、最小值、总和...
  6. Unity模拟行星轨道(一)
  7. 在线教育凛冬将至!强敌环伺的尚德机构,能否突出重围?
  8. 2019第十届蓝桥杯A组决赛(国赛)A题(三升序列)
  9. 董路太有才了--春晚零点报时出错技术分析
  10. python方位角计算
  11. Dubbo线程池耗尽问题
  12. Android 拍照:如何使用已有相机应用捕获图片(Taking Photos Simply
  13. 线程定义, 实现方式及代码实现.
  14. 记忆mySQL增删改查
  15. FPGA自学:利用主时钟产生周期方波
  16. 算法:食物链(并查集)
  17. java 对应sql驱动版本_有关sqlserver的 jdbc驱动版本整理
  18. unity 获取选中的目录_Unity的目录管理
  19. 带你了解并验证基金定投,附Python代码
  20. 商业图书阅读的原则以及一些方法习惯的养成

热门文章

  1. 计算机绘图自考知识点,计算机绘图(电子AD)自考大纲-08年9月.doc
  2. asp文本框输入控制是5的倍数_DL知识拾贝(Pytorch)(五):如何调整学习率
  3. 航空公司大数据建设的思考
  4. APP高曝光率到智能化投放,SDK猫眼信息流广告的投放策略!
  5. Palm OS、Windows CE及Linux OS之比较
  6. 对照表 - 用心整理了一份国内985/211大学名单及其一流学科
  7. 独家揭开几项神秘SEO技术的猪八戒面纱
  8. 易语言QQpost加好友源码
  9. 在算法研究过程中如何进行算法创新
  10. 如何零基础入门仿真 - version 2