c++关于内存的知识点上速成

news2024/11/23 15:15:08

温馨提示:本篇文章的内容涉及的是c++内存的管理方式

c++内存管理的方式

new的使用方式

类型   对象名 = new 类型  

注意:如果对象名前面的类型有星号,后面的类型(new后面的)不需要星号

样例:

delete的使用方式

delete  对象名

当然free在c++中依旧可以使用,但是malloc不建议与c++混合使用

malloc/free和new/delete的区别

1. malloc和free是函数,new和delete是操作符

2. malloc申请的空间不会初始化,new可以初始化

3. malloc: 申请空间时,需要手动计算空间大小并传递

    new : 只需在其后跟上空间的类型即可, 如果是多个对象,[]中指定对象个数即可

4. malloc: 返回值为void*, 在使用时必须强转

   new : 不需要,因为new后跟的是空间的类型

5. malloc: 申请空间失败时,返回的是NULL,因此使用时必须判空

    new:    不需要,但是new需 要捕获异常

6. malloc和free:申请自定义类型对象时,malloc/free只会开辟空间,不会调用构造函数与析构函数

   new:  new 在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成 空间中资源的清理释放

new和delete的实现原理

new的原理

1. 调用operator new函数申请空间

2. 在申请的空间上执行构造函数,完成对象的构造

delete的原理

1. 在空间上执行析构函数,完成对象中资源的清理工作

2. 调用operator delete函数释放对象的空间

new T[N]的原理

1. 调用operator new[]函数,在operator new[]中实际调用operator new函数完成N个对 象空间的申请

2. 在申请的空间上执行N次构造函数

delete[N]的原理

1. 在释放的对象空间上执行N次析构函数,完成N个对象中资源的清理

2. 调用operator delete[]释放空间,实际在operator delete[]中调用operator delete来释放空间

那么上述的new和delete的原理做个了解即可

那么本篇文章的内容就先到这里,我们下篇文章见!

都看到这里,给个三联呗,谢谢啦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2209429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMDK 0X80BB0005 VirtualBOX虚拟机错误处理-数据恢复——未来之窗数据恢复

打开虚拟盘文件in7.vmdk 失败. Could not get the storage format of the medium 7\win7.vmdk (VERR_NOT_SUPPORTED). 返回 代码:VBOX_E_IPRT_ERROR (0X80BB0005) 组件:MediumWrap 界面:IMedium {a a3f2dfb1} 被召者:IVirtualBox {768 cd607} 被召者 RC:VBOX_E_OBJECT_NOT_F…

生成式专题的第四节课--CycleGAN

CycleGAN(Cycle-Consistent Generative Adversarial Network,循环生成对抗网络)是一种用于无监督图像转换的深度学习模型,即一种用于图像到图像转换任务的生成对抗网络(GAN)的变体,它可以在没有…

团标大数据(2024年09月)

一、总体数据 截至2024年09月30日,共有8240家社会团体在全国团体标准信息平台注册,其中民政部登记注册的有973家,地方民政部门登记注册的有7267家。社会团体在平台共计公布89857项团体标准,其中民政部登记注册的社会团体公布3603…

点云数据与多相机图像融合实现3D场景的彩色可视化

引言 在现代3D计算机视觉和机器人感知领域,点云数据和图像信息的融合正变得越来越重要。点云数据提供了精确的几何结构,而图像则包含了丰富的颜色和纹理细节。将这两种数据源结合起来,我们能够创建更加逼真和信息丰富的3D场景表示。本文将深…

【C++】拆分详解 - vector

文章目录 一、vector的介绍二、vector的使用1. 构造2. 迭代器3. vector 空间增长问题4. 增删查改5. vector 迭代器失效问题5.1 底层空间改变(扩容、缩容)5.2 指定位置元素的删除操作5.3 Linux与VS平台差异 三、vector 模拟实现0. 整体框架1. 构造 / 析构…

4个方法教你快速取消Word文档底色

在使用Word编辑文档时,我们有时会遇到文字或段落带有不必要的底色,这不仅影响文档的美观,还可能干扰阅读。那么,如何轻松去除这些底色呢?以下是几种实用的方法: 方法1:使用底纹功能键 首先&…

点可云ERP进销存V8版本——其他收入单使用说明进

其他收入单用于记录除销售内容外其他收入资金,如:废品出售、安装维修服务等。新增保存之后,对应资金账户将增加金额额度,并做存储记录,可在现金银行报表中体现。 新增操作 接下来我们讲解新增单据步骤。如上图所示&am…

怎样设置Windows系统不会自动同步时间

一、背景 我们在进行测试一些软件的时候需要调整Windows系统的时间到指定的日期,并且希望这个手动调整的日期可以固定住不变,不希望电脑重启后恢复到当前的最新日期。 二、操作方法 注意:如下的操作方法是以Windows7系统为例进行演示说明: 1、选中右下角的日期然后点击鼠…

C++笔记---红黑树的插入删除

1. 红黑树的概念 红黑树是一棵二叉搜索树,他的每个结点增加一个存储位来表示结点的颜色,可以是红色或者黑色。 通过对任何一条从根到叶子的路径上各个结点的颜色进行约束,红黑树确保对于任意一个结点,没有一条到NULL结点的路径会…

【C++算法】9.滑动窗口_长度最小的子数组

文章目录 题目链接:题目描述:解法C 算法代码:图解 题目链接: 209. 长度最小的子数组 题目描述: 解法 解法一:暴力求解(会超时) 暴力枚举出所有子数组的和。 查找子数组n2&#xff0…

【hot100-java】K 个一组翻转链表

链表篇 参考题解 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ …

文件传输遗漏

查看失败的 Failed to transfer file ‘E:\m3dmpre\datasets\mvtec3d\foam\train\good\xyz\184.tiff’. Could not close the output stream for file “sftp://172.29.6.20/home/cszx/zgp/datasets/mvtec3d/foam/train/good/xyz/184.tiff”. 将faild的全部重传一遍

知识二: 马尔科夫决策过程

强化学习从入门到精通(马尔科夫决策过程)(7天入门强化学习) 知识二:马尔科夫决策过程 先介绍马尔可夫过程(Markov process)以及马尔可夫奖励过程(Markov reward process&#xff0…

matlab不小心删除怎么撤回

预设项——>删除文件——>移动至临时文件夹 tem临时文件夹下

中级软考-软件设计师重要性与含金量以及就业方向(文末分享考试真题与笔记)

中级软考软件设计师在中国IT行业中具有重要的地位和高含金量,特别是在以下几个方面: 重要性与含金量 职业认可:该证书是国家认可的,证明持证人具备一定的软件设计和开发能力,对求职者在招聘市场上具有较强的竞争力。 …

如何在 iPad 上恢复已删除的历史记录?

iPad 配备了一个名为 Safari 的内置网络浏览器。这是一种在旅途中保持联系和浏览网页的强大且便捷的方式。但如果您不小心删除了浏览历史记录,则尝试恢复它可能会很令人沮丧。 幸运的是,您可以通过多种方法在 iPad 上恢复已删除的 Safari 历史记录。您应…

匹配全国地址的正则表达式工具类

正则表达式,匹配全国五级地址工具类,可以直接放在项目中使用~ 1级:国 (可忽略不填) 2级:**省、**自治区、**直辖市、**特别行政区、(四个直辖市可忽略不填) 3级:**市、**…

低代码和零代码开发方式如何改变软件开发行业?

低代码和零代码开发方式如何改变软件开发行业? 随着技术的进步和数字化转型的加速,软件开发行业正在经历一场革命。在这场革命中,低代码和零代码平台正逐渐成为企业开发应用的重要工具。它们以其简单易用的特性,极大地降低了软件…

面试笔记-js基础篇

1、因为在 JS 的最初版本中,使用的是 32 位系统,为了性能考虑使用低位存储了变量的类型信息,000 开头代表是对象,然而 null 表示为全零,所以将它错误的判断为 object 。虽然现在的内部类型判断代码已经改变了&#xff…

计算机网络第1章(概述)万字笔记详细版

1.1、计算机网络在信息时代的作用 计算机网络已由一种通信基础设施发展成为一种重要的信息服务基础设施计算机网络已经像水,电,煤气这些基础设施一样,成为我们生活中不可或缺的一部分 我国互联网发展状况 中国互联网络信息中心CNNIC 1.2、…