malloc/free
- 用户须指定创建多大的空间
- 不会调用相应的构造函数,必须自己进行初始化
- 申请成功,返回void*,在赋值前必须进行强制类型转换
- 申请失败时,返回NULL,不会进行安全检查,需用户自己进行判断是否为NULL
- free不会自动调用对象的析构函数,直接释放内存
new/delete
- 无须指定创建的空间大小
- 申请到内存后,会自动调用构造函数对对象进行初始化
- 申请成功,返回严格匹配的类型指针
- 申请失败时,会发出bad_alloc异常
- delete先调用析构函数,再释放内存
即new/delete把malloc/free的缺点全补上了,如内置的长度计算、类型转换、安全检查。
new/malloc
原文:https://www.cnblogs.com/LeeQMoon/p/12411882.html