请说明 C++ 中 new/delete 的实现原理,申请失败时的场景及结果,以及它们与 malloc/free 的区别。
考察说明
考察对 C++ 内存管理底层机制、异常安全与 C 语言内存分配差异的理解
回答思路
- 准确描述 new 包含 operator new 分配与构造函数调用两个阶段
- 说明 delete 先析构再调用 operator delete 释放的流程
- 区分 new/delete 失败抛异常与 malloc/free 返回 NULL 的行为
- 指出 new[]/delete[] 与单一对象分配的区别及数组计数开销
- 解释两者在类型安全、重载和内存对齐方面的差异
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。