malloc/free | new/delete |
---|---|
是函数 | 是操作符 |
malloc申请空间时需要手动计算大小并传递 | new 只需要跟上类型就行 |
申请到的空间是 void* 需要强制类型转换为所需类型 | 不需要,new 后面跟着数据类型 |
动态申请的空间需要判空之后才能使用 | 一般都会申请成功,内部是一个while循环对malloc的封装,内存不足,需要捕捉异常 |
malloc申请的空间不能初始化 | new申请的空间可以 |
malloc可以申请内置类型或者自定义类型,但不会初始化,因为没有构造函数 | new申请空间之后会自动调用构造函数 |
free不会调用构造函数 | delete 先调用析构函数,再释放空间 |
free函数如果是:
free(NULL);
不会出错!!!!