new malloc的区别

从使用上来说

1.malloc需要自行计算分配的字节数,平常用sizeof(Type)*num来计算,new只需要声明需要的数目即可。

2.malloc返回的是void*,需要自行再指针类型转换一下,new则不需要

3.new声明对象的时候会调用对象的构造函数(一次申请多个的时候调用默认构造),析构函数,malloc则只分配内存。

4.分配失败的时候,malloc返回空指针,new则是抛出std::bal_alloc异常,需要异常处理

5.new是C++的运算符,可以重载(全局重载和类成员重载),malloc是库函数,不能重载

6.new配delete,malloc配free,new数组配delete[] p

对一点存疑,有些地方说new分配内存是C++抽象出的自由分配区,malloc是严格的堆内存,但是测试的时候new跟malloc分配的几乎是挨着的,不知道是不是因为两句话写的挨着的原因。

猜你喜欢

转载自blog.csdn.net/zhangzhi2ma/article/details/82529323