当前位置: 首页 > news >正文

C++中的new与delete

目录

1.简介

2.底层


1.简介

new是升级版的malloc,它会先开空间再去调用构造函数。

delete是升级版的free,它会先调用析构函数再free掉空间。

class A
{
public:A(int a1=0, int b1=0){a = a1;b = b1;}private:int a;int b;
};int main()
{//new会先开空间再调用构造函数A* p1 = new A;A* p2 = new A(1, 1);//new多个对象并调用构造函数初始化A* p3 = new A[3];//隐式类型转换:先构造出临时对象再调用拷贝构造A* p4 = new A[3]{ {1,2},{2,3},{3,5} };//运用匿名对象初始化,先是构造匿名对象,再拷贝构造(编译器会优化成一次构造)A* p5 = new A[3]{ A(1,1),A(2,2),A(3,3) };//delete会先调用析构函数,再free掉空间delete p1;delete p2;delete [] p3;delete [] p4;delete [] p5;return 0;
}

2.底层

//模拟底层//先是开空间,这里和malloc没区别
A* p6 = (A*)operator new(sizeof(A));
//显式调用构造函数
new(p6)A(1, 2);//显式调用析构函数
p6->~A();
//释放空间
operator delete (p6);

http://www.lryc.cn/news/442854.html

相关文章:

  • 在HTML中添加视频
  • YoloV10 训练自己的数据集(推理,转化,C#部署)
  • Science Robotic 内在触觉实现直观的物理人机交互
  • string类(C++)
  • 【C语言】自定义类型——结构体
  • MySQL练手题--日期连续类型(困难)
  • 【AD24报错】运行DRC后出现 Un-Routed Net Constraint ### Net Not Assigned 的解决方案
  • Linux嵌入式驱动开发指南(速记版)---Linux基础篇
  • PDF——压缩大小的方法
  • 无监督神经组合优化的扩散模型框架
  • Web前端开发
  • transformer模型进行英译汉,汉译英
  • python 异步读取文件,速度变快了吗
  • 【Python】Anaconda插件:Sublime Text中的Python开发利器
  • Python酷库之旅-第三方库Pandas(123)
  • IEEE投稿 IEEE Geoscience and Remote Sensing Letters
  • 【华为杯】2024华为杯数模研赛D题 解题思路
  • Ubuntu20.04 搜索不到任何蓝牙设备
  • 【2024】MySQL账户管理
  • 轻量级流密码算法Trivium
  • MapReduce基本原理
  • 数据结构之栈(python)
  • 浅谈人工智能之基于HTTP方式调用本地QWen OPenAI接口(Java版)
  • 【python设计模式7】行为型模式2
  • 基于PHP的CRM管理系统源码/客户关系管理CRM系统源码/php源码/附安装教程
  • 【乐企】基础版接口代码实现
  • 题目--力扣----各位相加
  • git 如何基于某个分支rebase?
  • 倒序循环(一)
  • Shell篇之编写apache启动脚本