news 2026/7/23 15:24:22

单片机/C/C++八股:(十六)C 中 malloc/free 和 C++ 中 new/delete 有什么区别?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
单片机/C/C++八股:(十六)C 中 malloc/free 和 C++ 中 new/delete 有什么区别?
上一篇下一篇
内存对齐、结构体内存对齐

C 中 malloc/free 和 C++ 中 new/delete 有什么区别?

这一版只是初版,因为会涉及到 C++ 中的面向对象编程,比如构造函数、析构函数、类

构造函数:初始化对象,在创建对象时自动调用,用于设置初始状态(如分配资源、赋初值等)。

析构函数:清理对象,在对象销毁前自动调用,用于释放资源(如关闭文件、释放动态内存等)。

1)关键区别总结

最关键区别new/delete管理对象,malloc/free只管理裸内存new/delete更好。

  1. 语言层级:
    • malloc/free:C 标准库函数,仅分配/释放原始内存。
    • new/delete:C++ 运算符,属于语言内置机制,不仅管理内存,还涉及对象生命周期。
  2. 内存分配:
    • malloc:需要手动计算大小
    • new:自动计算所需空间
  3. 类型安全:
    • malloc:返回void*,需要强制类型转换
    • new:返回对应类型指针
  4. 构造/析构:
    • malloc:不调用构造函数
    • new:自动调用构造函数和析构函数
  5. 错误处理:
    • malloc:返回 NULL 表示分配失败
    • new:抛出异常std::bad_alloc
  6. 数组处理:
    • malloc:需要手动计算总大小
    • new:使用new[]delete[]处理数组
  7. 兼容性:
    • C++ 允许使用malloc/free,但不推荐用于对象(会跳过构造/析构,导致资源泄漏或未定义行为)。
    • C 中不能使用new/delete(非 C 语言特性)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/23 15:23:30

Beyond Compare 5 本地化授权解决方案:开源工具部署与实践指南

Beyond Compare 5 本地化授权解决方案:开源工具部署与实践指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 在企业级文件对比与合并工作中,Beyond Compare 5作为专业工…

作者头像 李华
网站建设 2026/7/23 15:24:22

【fastadmin】实现批量导入Excel与自定义按钮管理管理员权限的实战指南

1. 快速理解FastAdmin批量导入与权限管理需求 最近在帮一个教育机构做后台管理系统升级,他们有个很实际的需求:每次开学季都要批量添加上百个教师账号,还要把这些账号统一分配到"教师组"权限。手动操作不仅效率低,还容易…

作者头像 李华
网站建设 2026/7/14 14:20:33

Interval库:嵌入式系统毫秒级无阻塞时间管理方案

1. Interval库概述:面向嵌入式系统的轻量级时间间隔管理方案Interval库是一个专为Arduino平台设计的轻量级时间间隔管理库,其核心目标是在资源受限的MCU上提供精确、无阻塞、可嵌套的时间间隔控制能力。它并非简单的delay()替代品,而是一套基…

作者头像 李华
网站建设 2026/7/14 14:20:31

实现一个Python中枢程序,能够并行调度多个Claude Code工作节点在独立Git工作区中完成开发任务,并自动合并结果、测试与修复。程序使用多线程并发调用claude命令行工具,并通过Git w

我们实现一个Python中枢程序,能够并行调度多个Claude Code工作节点在独立Git工作区中完成开发任务,并自动合并结果、测试与修复。程序使用多线程并发调用claude命令行工具,并通过Git worktree管理隔离环境。支持自定义任务列表和仓库配置。 #!/usr/bin/env python3 "&…

作者头像 李华
网站建设 2026/7/14 14:20:31

[特殊字符] GLM-4V-9B跨界融合:建筑设计图自动生成施工建议

GLM-4V-9B跨界融合:建筑设计图自动生成施工建议 1. 项目介绍 GLM-4V-9B是一个强大的多模态大模型,专门设计用于理解和分析图像内容。本项目基于Streamlit框架构建了一个本地部署方案,让用户能够轻松使用这个模型来处理建筑设计图&#xff0…

作者头像 李华
网站建设 2026/7/14 14:20:30

Linux嵌入式I/O底层机制与零拷贝优化

1. Linux I/O 系统的底层机制解析Linux 的 I/O 系统并非简单的数据搬运通道,而是一套经过数十年演进、在性能、一致性与抽象层级之间反复权衡的精密工程体系。理解其内在逻辑,是嵌入式系统开发者构建高性能网络服务、实时数据采集模块或低延迟存储驱动的…

作者头像 李华