动态管理

  • 一.new和delete(一般使用)
  • 二.operator new与operator delete函数(底层)
  • 三.new和delete的实现原理
  • 四.定位new(placement-new)
  • 五.malloc和new的区别

前置知识(堆区):c语言动态内存
额外知识:栈区

一.new和delete(一般使用)

对于自定义类型

对多个自定义类型创建时,必须进行初始化,如果不想初始化,那么就得给缺省值。

注意:在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与
free不会。

二.operator new与operator delete函数(底层)

这两个函数不是简单的对new和delete进行运算符重载,它们其实是全局函数。下面是两个库函数的实现代码(看不懂很正常)

简单使用一下

1.new和delete是用户进行动态内存申请和释放的操作符,operator new 和operator delete是系统提供的全局函数,new在底层调用operator new全局函数来申请空间,delete在底层通过operator delete全局函数来释放空间

2.通过上述两个全局函数的实现知道,operator new 实际也是通过malloc来申请空间,如果malloc申请空间成功就直接返回,否则执行用户提供的空间不足应对措施,如果用户提供该措施就继续申请,否则就抛异常。operator delete 最终是通过free来释放空间的。

用法

三.new和delete的实现原理

内置类型

自定义类型

四.定位new(placement-new)

1.定位new表达式是在已分配的原始内存空间中调用构造函数初始化一个对象。 使用格式: new (place_address)
type或者new (place_address) type(initializer-list)
2.place_address必须是一个指针,initializer-list是类型的初始化列表 使用场景:
定位new表达式在实际中一般是配合内存池使用。因为内存池分配出的内存没有初始化,所以如果是自定义类型的对象,需要使用new的定义表达式进行显示调构造函数进行初始化。

注意这里并不是new,而是new的另一个用法,可以显示调用构造函数


插个小知识,这里也必须显示调用析构函数,因为p1是指针,属于内置类型不会自动调用析构函数。

五.malloc和new的区别

【C++初阶】:动态管理相关推荐

  1. C/C++内存管理模板初阶

    内存管理和模板初阶 1 内存管理 1.1 C/C++ 的内存分布 1.2 C 中动态内存管理方式 1.3 C++ 中动态内存管理方式 1.3.1 new/delete操作内置类型 1.3.2 new/ ...

  2. 学习笔记:C++初阶【C++入门、类和对象、C/C++内存管理、模板初阶、STL简介、string、vector、list、stack、queueu、模板进阶、C++的IO流】

    文章目录 前言 一.C++入门 1. C++关键字 2.命名空间 2.1 C语言缺点之一,没办法很好地解决命名冲突问题 2.2 C++提出了一个新语法--命名空间 2.2.1 命名空间概念 2.2.2 ...

  3. 制造企业ERP 生产管理初阶很重要

    经常有企业受到财务型ERP企业误导,认为制造企业应该先上进销存加财务,再上生产.理由无非两个:一个是ERP很复杂,成功率很低,需要逐步实施;二个是进销存很简单,较为容易成功,能为ERP系统全面应用打下 ...

  4. ERP初阶(九):ERP的主要功能模块简介

    ERP初阶(九):ERP的主要功能模块简介 (by AMT ERP研究小组) 对于ERP原理的初步了解是我们认识ERP的基础,接下来,为了使大家对ERP产品有一个感性的认识,我们就要从它的功能上再给予 ...

  5. C++初阶 — vector

    目录 一.vector的介绍及使用 1. vector的介绍 2. vector的使用 2.1 vector的定义 2.2 vector iterator 的使用 2.3 vector 空间增长问题 ...

  6. 前端三剑客之 HTML - JavaEE初阶 - 细节狂魔

    文章目录 前言 后端 && 前端的部分历史 - java 关于网站搭建 正文开始! HTML 怎么编写一个HTML的代码? 小拓展: 快速编写 HTML 代码的小技巧 浏览器的开发者工 ...

  7. SAP QM初阶执行事务代码QDB1,报错- Sampling procedure NM000001 has no sampling scheme-

    SAP QM初阶执行事务代码QDB1,报错- Sampling procedure NM000001 has no sampling scheme- SAP QM模块里,事务代码QDB1用于维护取样策 ...

  8. SAP WM初阶之IM层面货物移动后WM层面自动完成TO创建和确认

    SAP WM初阶之IM层面货物移动后WM层面自动完成TO创建和确认 SAP系统在自动化方面做得很好. 由于启用了SAP WM模块,管理库存到货架级别,这使得企业的库存管理更精准也更细,但是也不可避免的 ...

  9. SAP RETAIL初阶之商品主数据门店视图里没有WM数据

    SAP RETAIL初阶之商品主数据门店视图里没有WM数据 这里以商品号729为例简要说明. 执行事务代码MM42进入Logistics:Store视图,门店代码NM03, 回车, 无法维护其WM相关 ...

最新文章

  1. 动态引入js只能生效一次_干货丨动态插入的script脚本执行时间
  2. 面经:为了拿到字节跳动offer,鬼知道我经历了啥...
  3. 【c语言】蓝桥杯基础练习 时间转换
  4. 中法计算机专业,计算机专业中法对照词汇
  5. 一行代码让matplotlib图表变高大上
  6. LeetCode 259. 较小的三数之和(固定一点,内层双指针)
  7. Spring MVC之基于java config无xml配置的web应用构建
  8. 怎么安装python2.7_python2.7环境如何安装
  9. 代码创建数据库_表--SqlServer数据库
  10. 实战MEF(3):只导出类的成员
  11. gatk过滤_快速入门GATK | Public Library of Bioinformatics
  12. pageadmin CMS网站建设教程:附属表数据列表调用语法
  13. python 绘制RGB三维颜色空间色谱图(已实现)
  14. Cannot determine archive format of /tmp/pip-req-build-
  15. 2021年中国牛肉市场供需现状、进出口贸易及价格走势分析[图]
  16. 复盘:霍夫曼编码平均长度计算方式,信源符号a1-a6概率为:0.1,0.4,0.06,0.1,0.04,0.3,霍夫曼编码平均长度是
  17. IGRP/EIGRP 内部网管路由选择协议
  18. Java实现MD5和国密SM3摘要算法
  19. 齐鲁工业大学计算机科学与技术学院院长,齐鲁工业大学计算机科学与技术学院导师教师师资介绍简介-翟翌...
  20. 三张表,四张表怎么连接?

热门文章

  1. 计算机网络初探教案,网络环境下的计算机教学初探
  2. 《欢乐颂》-圈子不同,不必强融,自有剧本玩弄
  3. java字间距突然变大
  4. DevTools——chrome浏览器调试手机端WebView
  5. 用photoshop结合切片工具处理超级大图,例如原图为完整的台湾省19级图片
  6. 微信红包封面的N种玩儿法
  7. MATLAB----绘制三维曲面
  8. 音频如何转换成mp3格式?详细步骤解析
  9. 贵阳大数据交易所发布四份数据管理交易解决方案
  10. 点成案例丨细胞培养芯片用于构建肠模型实例分享