malloc/free 与 new/delete的区别

区别:
malloc/free 与 new/delete的区别
new:只会调用一次构造函数,new申请的空间是单个类型的对象
new[]:申请的是一段连续的空间,会多次调用构造函数。

申请空间的方式必须与释放的方式成对使用:
malloc/free 与 new/delete的区别
new:(底层是对malloc函数的封装)

  1. 申请空间----->(底层) void operator new(size 字节数)
    循环调用malloc(size)申请空间
    malloc/free 与 new/delete的区别

  2. 调用构造函数
    在申请的空间中调用构造函数

delete:(对free函数进行封装)

  1. 先调用析构函数
    释放对象中的资源
  2. 释放空间 ---->(底层) void operator delete(void *p)
    循环使用free函数,对资源进行释放。