malloc/free 与 new/delete的区别

人盡茶涼 提交于 2020-01-26 06:19:21

区别:
在这里插入图片描述
new:只会调用一次构造函数,new申请的空间是单个类型的对象
new[]:申请的是一段连续的空间,会多次调用构造函数。

申请空间的方式必须与释放的方式成对使用:
在这里插入图片描述
new:(底层是对malloc函数的封装)

  1. 申请空间----->(底层) void operator new(size 字节数)
    循环调用malloc(size)申请空间
    在这里插入图片描述

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

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

  1. 先调用析构函数
    释放对象中的资源
  2. 释放空间 ---->(底层) void operator delete(void *p)
    循环使用free函数,对资源进行释放。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!