C++--问题7--new 与 malloc

C++--问题7--new 与 malloc


1.new 与 malloc的区别

(1)new关键字                         malloc函数

(2)new系统计算大小              malloc程序员设计

(3)new返回值类型安全          malloc返回值类型不安全

(4)new还可以做初始化          malloc只开辟内存

(5)new[]  数组个数                 malloc总大小

(6)new  自由存储区域            malloc堆

(7)内存申请失败

         new抛出bad_alloc              malloc返回NULL

(8)new关键字可以重载           malloc不能重载          operator new  开辟内存

2.new和delete是如何实现的

(1)new一个对象时:调用malloc为对象分配内存空间 ,调用对象的构造函数 ;

(2)delete时:调用对象的析构函数,调用free回收内存。

3.既然有了malloc/free,C++中为什么还需要new/delete呢?

(1)malloc/free和new/delete都是用来申请内存和回收内存的 ;

(2)在对非基本数据类型的对象使用的时候,对象创建的时候还需要执行构造函数,销毁的时候要执行析构函数。而malloc/free是库函数,是已经编译的代码,所以不能把构造函数和析构函数的功能强加给malloc/free。

猜你喜欢

转载自blog.csdn.net/qq_41103495/article/details/108545182
今日推荐