new/delete malloc/free

本文对比了C++的new和malloc,探讨了它们在内存申请和析构构造上的差异。new自动分配内存并调用构造,而malloc需手动计算。new通过operatenew和operatedelete实现,malloc后需自行free。C++中new/deleting的重要性在于提供构造/析构支持,malloc/free则侧重于底层内存操作。
摘要由CSDN通过智能技术生成

相同点:同样是内存的静态申请和释放

不同点:new/delete是c++运算符,malloc/free是c++语言标准库函数;

​                new自动计算分配的空间,malloc需要自己手动计算;

## new/delete的实现:

调用名为operate new/operate delete的标准库函数来实现的,分配足够大的内存来保存指定类型的一个对象。

​ 对指针指向的对象运行适当的析构函数;然后用delete标准库来释放。

## malloc和new的区别:

 

## new做了什么:

 

1. 先调用operate new--里面有malloc函数;

2. 再调用构造函数;

   理解:先申请一块地,才能盖改房子。

## 既然有了malloc/free,C++中为什么还需要new/delete呢?直接用malloc/free不好吗?

malloc和free是库函数,是已经编译好了的,无法执行析构和构造的功能。

## 被free回收的内存是立即返还给操作系统吗?

不是的,被free回收的内存会首先被ptmalloc使用双链表保存起来,当用户下一次申请内存的时候,会尝试从这些内存中寻找合适的返回。这样就避免了频繁的系统调用,占用过多的系统资源。同时ptmalloc也会尝试对小块内存进行合并,避免过多的内存碎片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值