当前位置: 首页 > 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);

原文地址:https://blog.csdn.net/GGbond665/article/details/142315282
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mrgr.cn/news/28845.html

相关文章:

  • windows 极速安装 Linux (Ubuntu)-- 无需虚拟机
  • G1原理—8.如何优化G1中的YGC
  • HTTP/HTTPS ⑤-CA证书 || 中间人攻击 || SSL/TLS
  • 基于单片机的语音控制玩具汽车的设计
  • 【Spring Boot 应用开发】-04-01 自动配置-数据源-连接池
  • 忘记了PDF文件的密码,怎么办?
  • 欧美游戏市场的差异
  • C#实现基于ADO.NET框架的DBHelper工具类
  • 使用helm chart在Kubernetes部署Minio-适用于生产环境的部署方案
  • 技术上,如何复现 o1?
  • Marketo默认文件夹作用
  • 复选按钮QCheckBox
  • FastAPI动态路由设计:使用APIRouter处理复杂回调函数
  • 使用Faiss进行K-Means聚类
  • 【Linux】Shell编程入门
  • 面试真题-TCP的三次握手
  • 鸿蒙开发笔记_电商严选02_登录页面跳转到我的页面、并传值
  • 【C++】——继承详解
  • GPU加速生物信息分析的尝试
  • react-native和原生android的交互
  • ThreadX源码:Cortex-A7的tx_thread_irq_nesting_end(嵌套中断结束动作).s汇编代码分析
  • 算法竞赛命题数据生成方法
  • 硬件工程师笔试面试学习汇总——器件篇目录
  • iOS 18 新功能:控制中心大變身!控制項目自由選配
  • 电路设计学习(一)
  • 【AcWing】前缀和与差分(一维 + 二维)