有了malloc/free,为什么还要new/delete

  • malloc与free是C/C++的标准库函数,new/delete是C++的运算符。
    • 对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。
    • C++需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。
  • 总结

malloc与free是C/C++的标准库函数,new/delete是C++的运算符。

它们都可用于申请动态内存和释放内存。

对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。

对象在创建的同时要自动执行构造函数,对象的消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
因此,

C++需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。

注意:new/delete不是库函数。请看下面例子:

有了malloc/free,为什么还要new/delete?相关推荐

  1. 有了malloc/free为什么还要new/delete ?

    有了malloc/free为什么还要new/delete ? malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符.它们都可用于申请动态内存和释放内存. 对于非内部 ...

  2. C++中有了malloc/free 为什么还要new/delete?

    malloc 与free 是C++/C 语言的标准库函数,new/delete 是C++的运算符.它们都可用于申请动态内存和释放内存. 对于非内部数据类型(内部数据类型是编译器本来就认识的,不需要用户 ...

  3. 内存分布malloc/calloc/realloc/free/new/delete、内存泄露、String模板、浅拷贝与深拷贝以及模拟string类的实现

    内存分布 一.C语言中的动态内存管理方式:malloc/calloc/realloc和free 1.malloc: 从堆上获得指定字节的内存空间,函数声明:void *malloc (int n); ...

  4. 一文解决new/delete与malloc/free相关问题:区别?注意事项?使用方式?

    目录 一.内存分配模型 1.1 先看内存的分布状况 1.2 动态内存分配 1.3 C语言中分配内存的方式 1.4 C++中动态分配内存的方式 二.new和malloc的区别 2.1 属性 2.2 参数 ...

  5. 转载:malloc()与new()的区别详解

    1. malloc()函数 1.1 malloc的全称是memory allocation,中文叫动态内存分配. 原型:extern void *malloc(unsigned int num_byt ...

  6. malloc与new的区别

    1. malloc()函数 1.1 malloc的全称是memory allocation,中文叫动态内存分配. 原型:extern void *malloc(unsigned int num_byt ...

  7. malloc和new有什么区别

    malloc和new有以下不同: new.delete是操作符,可以重载,只能在c++中使用. malloc.free是函数,可以覆盖,c.c++中都可以使用. new可以调用对象的构造函数,对应的d ...

  8. malloc和new的区别

    鉴于上次腾讯一面涉及到了malloc/free和new/delete的区别,当时我回答的不够全面,在网上搜了搜,找到了一篇介绍得比较全面的文章,先将其转载至我的博客上,以供自己和大家一起学习,链接为: ...

  9. 内存管理模拟程序c语言,C语言 内存管理详解

    本文出自: 伟大的Bill Gates曾经失言: 640K ought to be enough for everybody -Bill Gates 1981. 程序员们经常编写内存管理程序,往往提心 ...

最新文章

  1. BZOJ 1859 Luogu P2589 [ZJOI2006]碗的叠放 (计算几何)
  2. 2021年自然语言处理 (NLP) 算法学习路线!
  3. eclipse下使用git插件上传代码至github
  4. Java核心篇之JVM--day3
  5. LeetCode 788. Rotated Digits
  6. C++运算符重载 摘自网络
  7. vue 父链和子组件索引_解决Vue2.x父组件与子组件之间的双向绑定问题
  8. centos下查看最大Socket连接数
  9. 【ENVI】shp文件裁剪需要注意的问题
  10. Ron Patton之《软件测试》书籍(原书第2版)书籍
  11. 小米手机相机英文翻译
  12. 绘制中国象棋棋盘 - CSS Pseudo Elements 的使用
  13. python大学考试题及答案填空_大学慕课2020Python编程基础题目及答案
  14. 微信小程序WXS的使用
  15. Again! There are tons of wrong answers!
  16. 某cpws - ciphertext加密与数据解密
  17. 常见的HTTP状态码(HTTP Status Code)说明
  18. 第一批用基因编辑工具定制DNA的婴儿即将诞生?
  19. 带头结点单链表的基本使用
  20. Java的TCP/UDP网络编程+多线程实现服务器端与客户端间的通信

热门文章

  1. 稀疏多项式的运算用链表_用漫画告诉你—什么是HashMap?
  2. 要学会Python爬虫都需要什么基础呢?
  3. JavaScript中常用的事件代码及实例
  4. hash 值重复_“重复”相关的问题
  5. 不允许使用不完整的类型_河南:限速标志不达标,坚决不允许通车!
  6. 4.odoo13的学习(odoo中的xml)
  7. 浅谈MyBatis一级缓存
  8. VTK:旋转球体用法实战
  9. VTK:单元格内部对象CellsInsideObject用法实战
  10. wxWidgets:wxBitmapToggleButton类用法