| 特征 | new | malloc |
|---|---|---|
| 类型 | 关键字 | 标准库函数 |
| 支持语言 | C/C++ |
只在 C++ |
| 申请内存的位置 | 自由存储区 free store |
堆 |
| 分配内存的大小 | 编译器根据类型信息自行计算 | 显示指定字节数 |
| 内存分配失败 | 抛出 bac_alloc 异常, 不会返回 NULL |
返回 NULL |
| 返回类型 | 返回对象类型的指针 | 返回void 指针,需要转换 |
| 是否调用构造函数/析构函数 | 调用 | 不调用 |
| 处理数组 | new[] |
手动指定数组的大小 |
| 是否支持重载 | 支持 | 不支持 |
| 是否支持内存扩充 | 不支持 | realloc |
| 内存释放方式 | new/delete, new[]/delete[] |
malloc/free |