Skip to content

new和malloc

c++有堆内存和栈内存之分。本来全部都是堆内存,栈内存的出现:花一点点 cpu 的时间,极大缩短开发时间和实现内存自动管理。

newmalloc都是分配在堆内存上,完成手动申请和手动释放。两者主要区别:

要不是面试问,谁会管他们俩属性什么的区别啊。。。。。。

  1. 属性  
    new 是关键字(编译器支持),malloc 是库函数(头文件支持)。
  2. 参数  
    new 无需指定大小,malloc 需要指定大小。
  3. 返回类型  
    new 返回类型是对象指针,malloc
  4. 对于自定义的类  
    new 会调用构造和析构函数,malloc 不会调用构造和析构函数
  5. 分配失败
    new 会抛出异常,malloc 返回空
  6. 内存泄露  
    两者都能检测到,new 可以检查到哪一行,malloc 不行。