`new/delete`和`malloc/free`之间有什么关系?

相同点:

对于内部数据类型来说,没有构造与析构的过程,所以两者是等价的,都可以用于申请动态内存和释放内存;

不同点:

new/delete可以调用对象的构造函数和析构函数,属于运算符,在编译器权限之内;

malloc/free仅用于内存分配和释放,属于库函数,不在编译器权限之内;

new是类型安全的,而malloc返回的数据类型是void *,所以要显式地进行类型转换;

new可以自动计算所需字节数,而malloc需要手动计算;

new申请内存失败时抛出bad_malloc异常,而malloc返回空指针。

点击此处
隐藏目录