new和malloc都是动态分配内存的指令,它们的区别主要为以下五点:
1.申请内存所在位置不同
new从自由存储区上为对象动态分配内存空间
malloc从堆上动态分配内存
2.返回类型的安全性
new内存分配成功时,返回对象类型的指针,安全
Malloc成功时返回void*,需要强转
3.分配内存失败时的结果不同
new分配内存失败时,会抛出bac_alloc异常
malloc内存分配失败时返回NULL
4.是否需要指定内存大小
new申请内存分配时无需制定内存块的大小,编译器会根据类型自行计算
malloc需要显式地指出所需内存的大小
5.是否调用对象中的构造函数
new/delete会调用对象的构造/析构函数
malloc不会