new和malloc的区别及malloc详解

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。

猜你喜欢

转载自blog.csdn.net/l477918269/article/details/89710613