1.差异对比
| 特性 | new/delete (C++) | malloc/free (C) |
|---|---|---|
| 语言层级 | C++ 专用 | C 标准库函数 |
| 构造/析构调用 | 自动调用构造 & 析构 | 不会调用 |
| 返回类型 | 返回指定类型指针 | 返回 void*,需强制转换 |
| 失败时行为 | 抛出 std::bad_alloc 异常 | 返回 NULL |
| 可重载 | 可重载 operator new/delete | 不可重载 |
| 数组支持 | new[] / delete[] | 需手动计算大小 |
2.总结
new/delete :c++中更推荐使用,因为符合RALL思想,new调用构造函数,delete调用析构
malloc/free:更底层,malloc仅分配内存(返回 void*,需强制转换),不调用构造函数(需要手动给属性赋值),free仅释放内存,不调用析构