new/malloc的区别
1、new/delete是c++的关键字,需要编译器支持;malloc/free是库函数,需要头文件支持
2、new一个类型时,编译器会根据类型信息自行计算申请的内存大小;malloc需要显示指出所需内存大小
3、申请成功。new返回类型的指针,属于安全性的操作符;malloc返回void *,需要强制转换成我们想要的类型。都是在堆上动态分配内存
4、分配失败。new内存分配失败,抛出bac_alloc异常;malloc内存分配失败,返回null
5、new的过程,底层先调用operator new(使用malloc实现)申请足够的内存,再调用构造函数,初始化成员变量,返回自定义类型指针;delete先调用operator delete(使用free实现),再调用析构函数,底层再调用free
6、new申请单个元素可以初始化intnum = new int(10),申请多个元素int arrPtr = new int[10];
7、new申请的内存会初始化;malloc申请的内存不会初始化
8、new/delete比malloc和free的效率稍微低点,因为new、delete的底层封装了
operator new、operator delete, 而operator new、operator delete底层又封装了malloc、free
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/96961.html