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。