[C++] 重载new和delete

本文详细介绍了C++中new和delete表达式的操作过程。new表达式包括分配内存、调用构造函数和返回指针三个步骤,而delete则执行析构函数调用和内存释放两个操作。理解这些机制对于优化内存管理和防止内存泄漏至关重要。
摘要由CSDN通过智能技术生成

1、new和delete表达式的工作机理

1)new表达式实际执行了三步

string *sp=new string(“aaaa”);
string *arr=new string[10];//string采用默认初始化

a、调用一个名为operator new(或者operator new[])的标准库函数,分配一块足够大的、原始的、未命名的内存空间,来准备存储对象或者对象的数组;
b、编译器运行相应的构造函数构造这些对象,在这里运行的是string的构造函数;
c、返回一个指向该对象或者对象数组的指针。

2)delete执行了两步操作:

delete sp;
delete []arr;

a、对sp或者arr所指的数组中的元素执行相应的析构函数;
b、编译器调用名为operator delete或者operator delete[]的标准库函数释放内存空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值