new与malloc

再谈二者区别:

1、new自动计算需要分配的空间,而malloc需要手工计算字节数
2、new是类型安全的,而malloc不是,比如:

int* p = new float[2]; // 编译时指出错误
int* p = malloc(2*sizeof(float)); // 编译时无法指出错误

new operator 由两步构成,分别是 operator new 和 construct
3、operator new对应于malloc,但operator new可以重载,可以自定义内存分配策略,甚至不做内存分配,甚至分配到非内存设备上。而malloc无能为力。
4、new将调用constructor,而malloc不能;delete将调用destructor,而free不能。
5、malloc/free要库文件支持,new/delete则不要。


相关文章:

  • 2022-12-23
  • 2021-11-08
  • 2021-12-28
  • 2021-10-07
  • 2022-12-23
  • 2021-07-27
  • 2021-12-23
  • 2021-08-17
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-02
  • 2021-04-17
  • 2021-12-21
  • 2022-12-23
相关资源
相似解决方案