1.new和malloc的区别
共同点:两者开的空间都存放在堆上,并且都需要手动释放
不同点:
- 在含义上:
1.malloc是一个函数,new是一个操作符。 - 初始化方面:
2.malloc申请的空间不会初始化,new可以初始化空间。 - 开辟空间方面:
3.malloc需要手动计算空间大小并传递,而new只需要声明空间是什么类型就好。 - 返回类型方面:
4.malloc返回的类型是void*,必要的时候需要强制转换,而new不需要,因为new后跟的是空间类型 - 申请失败的情况方面:
5.malloc申请失败时,返回的是空,因此需要严格判空。new需要捕捉异常。 - 申请自定义对象:
6.在申请自定义空间的时候,malloc只会开辟空间,而new在开辟空间的同时,会调用自定义对象的构造函数来完成初始化。 - 效率方面:
7.new相对malloc效率要低,因为new的底层封装了malloc。