当前位置: 首页 > news >正文

new与malloc[c++面试系列]

new与malloc的区别

  1. new顺从c++的思想,在堆区申请一个对象,因此它会调用对象的构造函数进行初始化,它也应该调用构造函数;malloc在堆区申请一块空间,用于存放资源
  2. new无需指定对象大小,可以自动计算对象大小进行资源分配;malloc需要指定资源大小。
  3. new和malloc都返回这块空间的起始地址,但是new返回的是跟对象同类型的指针,而malloc返回的是void指针需要强转成资源类型
  4. new失败是会抛异常,malloc失败时返回NULL
  5. new申请的资源需要delete去释放,malloc申请的资源需要free去释放;delete会调用对象的析构函数进行资源清理

free回收的内存是立即返还给操作系统吗?为什么

  1. 不是,free释放的资源会被内存分配器ptmalloc使用双链表先保存起来,当用户下次进行资源申请时,ptmalloc会先从这些内存中寻找合适的内存进行返回
  2. 当一个内存块被 free 时,ptmalloc 首先会检查相邻的内存块是否也是空闲的。如果是,它会将这些相邻的空闲块合并成一个更大的空闲块。这是为了减少内存碎片,提高内存利用率

http://www.dtcms.com/a/268415.html

相关文章:

  • GCC/G++编译器详解:从编译原理到动静态链接
  • 2025 JuniorCryptCTF re 部分wp
  • 【一起来学AI大模型】算法核心:数组/哈希表/树/排序/动态规划(LeetCode精练)
  • 【Docker基础】Docker数据卷管理:docker volume rm与prune命令对比
  • 计算机网络实验——配置ACL
  • vue3 当前页面方法暴露
  • 「Java题库」基础程序设计(理论+操作)
  • Excel 日期计算与最小日期选择(附示例下载)
  • DAY 49
  • monorepo + Turborepo --- 开发应用程序
  • Go语言实现双Token登录的思路与实现
  • 微服务基础:Spring Cloud Alibaba 组件有哪些?
  • 随机森林算法详解:Bagging思想的代表算法
  • 自存bro code java course 笔记(2025 及 2020)
  • 【Linux网络编程】Socket - UDP
  • CppCon 2018 学习:What do you mean “thread-safe“
  • Linux操作系统之文件(五):文件系统(下)
  • 数据库|达梦DM数据库安装步骤
  • 谷歌浏览器安全输入控件-allWebSafeInput控件
  • 黑布淡入淡出效果
  • Vue2 day07
  • STM32两种不同的链接配置方式
  • Python 中 ffmpeg-python 库的详细使用
  • CppCon 2018 学习:Undefined Behavior is Not an Error
  • Solidity——pure 不消耗gas的情况、call和sendTransaction区别
  • 【PyTorch】PyTorch中torch.nn模块的池化层
  • 汇编与接口技术:8259中断实验
  • Dify+Ollama+QwQ:3步本地部署,开启AI搜索新篇章
  • 1025 反转链表(附详细注释,逻辑分析)
  • 网络调式常用知识