new和malloc总结(面试常问)

本文总结了C++中的new与malloc的区别,包括它们的使用场景、内存分配方式、是否调用构造/析构函数等。new是C++的操作符,支持类型初始化和重载,而malloc是C语言的函数,需要手动指定内存大小并进行类型转换。在释放内存时,new/delete会调用对应的构造/析构函数,而malloc/free则不会。建议在涉及对象实例化时使用new/delete。
摘要由CSDN通过智能技术生成

***new的底层就是malloc  new先调用malloc申请空间,然后调用构造函数释放内存

***malloc申请的内存空间在上   new分配内存的位置是一片自由存储区
/*自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。
而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存。
自由存储区不等于堆,如上所述,布局new就可以不位于堆中。*/


区别:

1.malloc是一个函数  需要头文件支持   
   new是一个  C++的 操作符 也是 关键字   需要编译器支持

2.malloc在申请空间的时候需要手动计算空间大小  
   new只需要声明空间是什么类型的  不需要指定内存块的大小

3.malloc返回值是void*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值