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

单片机/C/C++八股:(十六)C 中 malloc/free 和 C++ 中 new/delete 有什么区别? 上一篇下一篇内存对齐、结构体内存对齐C 中 malloc/free 和 C 中 new/delete 有什么区别这一版只是初版因为会涉及到 C 中的面向对象编程比如构造函数、析构函数、类构造函数初始化对象在创建对象时自动调用用于设置初始状态如分配资源、赋初值等。析构函数清理对象在对象销毁前自动调用用于释放资源如关闭文件、释放动态内存等。1关键区别总结最关键区别new/delete管理对象malloc/free只管理裸内存。new/delete更好。语言层级malloc/freeC 标准库函数仅分配/释放原始内存。new/deleteC 运算符属于语言内置机制不仅管理内存还涉及对象生命周期。内存分配malloc需要手动计算大小new自动计算所需空间类型安全malloc返回void*需要强制类型转换new返回对应类型指针构造/析构malloc不调用构造函数new自动调用构造函数和析构函数错误处理malloc返回 NULL 表示分配失败new抛出异常std::bad_alloc数组处理malloc需要手动计算总大小new使用new[]和delete[]处理数组兼容性C 允许使用malloc/free但不推荐用于对象会跳过构造/析构导致资源泄漏或未定义行为。C 中不能使用new/delete非 C 语言特性。