内存管理基础(new/delete 与 malloc/free)

4 阅读1分钟

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仅释放内存,不调用析构