`new/delete`和`malloc/free`之间有什么关系?
相同点:
对于内部数据类型来说,没有构造与析构的过程,所以两者是等价的,都可以用于申请动态内存和释放内存;
不同点:
new/delete可以调用对象的构造函数和析构函数,属于运算符,在编译器权限之内;
malloc/free仅用于内存分配和释放,属于库函数,不在编译器权限之内;
new是类型安全的,而malloc返回的数据类型是void *,所以要显式地进行类型转换;
new可以自动计算所需字节数,而malloc需要手动计算;
new申请内存失败时抛出bad_malloc异常,而malloc返回空指针。
