new / delete 和 malloc / free 区别
1. 所属语言 & 关键字/函数
- new / delete:C++ 关键字
- malloc / free:C 语言库函数,头文件
<cstdlib>
2. 是否调用构造/析构
- new:分配内存 + 自动调用构造函数初始化对象
- delete:释放内存 + 自动调用析构函数清理资源
- malloc / free:只分配/释放原始内存,不调用构造、析构
3. 返回值类型
- new:返回对应类型指针,类型安全
- malloc:返回
void*,必须强制类型转换
4. 内存分配失败处理
- new:失败默认抛出
bad_alloc异常 - malloc:失败返回 NULL
5. 数组使用
- 数组用:
new[]/delete[](必须配对) - malloc:
malloc(n*sizeof(T)),free 直接释放
6. 重载
- new / delete 可以重载,自定义内存管理
- malloc / free 不能重载
7. 内存区域
都在**堆(heap)**上分配
面试口述
- new/delete 是 C++ 关键字,malloc/free 是 C 库函数;
- new 会调用构造函数,delete 调用析构函数,malloc/free 只管理内存;
- new 类型安全,malloc 返回 void* 需要强转;
- new 失败抛异常,malloc 失败返回空指针;
- 数组分别用 new[]/delete[],malloc 手动计算大小。
1万+

被折叠的 条评论
为什么被折叠?



