new/malloc

Posted leeqmoon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了new/malloc相关的知识,希望对你有一定的参考价值。

malloc/free

  • 用户须指定创建多大的空间
  • 不会调用相应的构造函数,必须自己进行初始化
  • 申请成功,返回void*,在赋值前必须进行强制类型转换
  • 申请失败时,返回NULL,不会进行安全检查,需用户自己进行判断是否为NULL
  • free不会自动调用对象的析构函数,直接释放内存

new/delete

  • 无须指定创建的空间大小
  • 申请到内存后,会自动调用构造函数对对象进行初始化
  • 申请成功,返回严格匹配的类型指针
  • 申请失败时,会发出bad_alloc异常
  • delete先调用析构函数,再释放内存
即new/delete把malloc/free的缺点全补上了,如内置的长度计算、类型转换、安全检查。

以上是关于new/malloc的主要内容,如果未能解决你的问题,请参考以下文章

new,malloc和::operator new

new/malloc的差别

new malloc

malloc/free与new/delete的区别与联系

new/delete 与 malloc/free的区别

new,malloc,GlobalAlloc具体解释