【C++初阶】:动态管理
动态管理
- 一.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++初阶】:动态管理相关推荐
- C/C++内存管理模板初阶
内存管理和模板初阶 1 内存管理 1.1 C/C++ 的内存分布 1.2 C 中动态内存管理方式 1.3 C++ 中动态内存管理方式 1.3.1 new/delete操作内置类型 1.3.2 new/ ...
- 学习笔记: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 ...
- 制造企业ERP 生产管理初阶很重要
经常有企业受到财务型ERP企业误导,认为制造企业应该先上进销存加财务,再上生产.理由无非两个:一个是ERP很复杂,成功率很低,需要逐步实施;二个是进销存很简单,较为容易成功,能为ERP系统全面应用打下 ...
- ERP初阶(九):ERP的主要功能模块简介
ERP初阶(九):ERP的主要功能模块简介 (by AMT ERP研究小组) 对于ERP原理的初步了解是我们认识ERP的基础,接下来,为了使大家对ERP产品有一个感性的认识,我们就要从它的功能上再给予 ...
- C++初阶 — vector
目录 一.vector的介绍及使用 1. vector的介绍 2. vector的使用 2.1 vector的定义 2.2 vector iterator 的使用 2.3 vector 空间增长问题 ...
- 前端三剑客之 HTML - JavaEE初阶 - 细节狂魔
文章目录 前言 后端 && 前端的部分历史 - java 关于网站搭建 正文开始! HTML 怎么编写一个HTML的代码? 小拓展: 快速编写 HTML 代码的小技巧 浏览器的开发者工 ...
- SAP QM初阶执行事务代码QDB1,报错- Sampling procedure NM000001 has no sampling scheme-
SAP QM初阶执行事务代码QDB1,报错- Sampling procedure NM000001 has no sampling scheme- SAP QM模块里,事务代码QDB1用于维护取样策 ...
- SAP WM初阶之IM层面货物移动后WM层面自动完成TO创建和确认
SAP WM初阶之IM层面货物移动后WM层面自动完成TO创建和确认 SAP系统在自动化方面做得很好. 由于启用了SAP WM模块,管理库存到货架级别,这使得企业的库存管理更精准也更细,但是也不可避免的 ...
- SAP RETAIL初阶之商品主数据门店视图里没有WM数据
SAP RETAIL初阶之商品主数据门店视图里没有WM数据 这里以商品号729为例简要说明. 执行事务代码MM42进入Logistics:Store视图,门店代码NM03, 回车, 无法维护其WM相关 ...
最新文章
- 动态引入js只能生效一次_干货丨动态插入的script脚本执行时间
- 面经:为了拿到字节跳动offer,鬼知道我经历了啥...
- 【c语言】蓝桥杯基础练习 时间转换
- 中法计算机专业,计算机专业中法对照词汇
- 一行代码让matplotlib图表变高大上
- LeetCode 259. 较小的三数之和(固定一点,内层双指针)
- Spring MVC之基于java config无xml配置的web应用构建
- 怎么安装python2.7_python2.7环境如何安装
- 代码创建数据库_表--SqlServer数据库
- 实战MEF(3):只导出类的成员
- gatk过滤_快速入门GATK | Public Library of Bioinformatics
- pageadmin CMS网站建设教程:附属表数据列表调用语法
- python 绘制RGB三维颜色空间色谱图(已实现)
- Cannot determine archive format of /tmp/pip-req-build-
- 2021年中国牛肉市场供需现状、进出口贸易及价格走势分析[图]
- 复盘:霍夫曼编码平均长度计算方式,信源符号a1-a6概率为:0.1,0.4,0.06,0.1,0.04,0.3,霍夫曼编码平均长度是
- IGRP/EIGRP 内部网管路由选择协议
- Java实现MD5和国密SM3摘要算法
- 齐鲁工业大学计算机科学与技术学院院长,齐鲁工业大学计算机科学与技术学院导师教师师资介绍简介-翟翌...
- 三张表,四张表怎么连接?