共同点:
malloc 和 new 都是需要在堆上申请空间,且最后需要释放掉,new 只是在 malloc 的基础上初始化了。
不同点:
1、malloc 和 free 都是函数,而 new 、delete 是类的操作符;
2、malloc 申请空间后需要手动初始化,而 new 不用;
3、malloc 需要手动计算申请空间的大小,而 new 只用 类型+[大小]即可;
4、malloc 在申请时是 void* 类型,需要强转,new + 类型;
5、malloc 空间申请失败时返回 NULL,需要 if 判空一下,new 申请失败不需要判空,但是需要捕获异常;
6、申请自定义类型对象时,malloc 和 free 不会调用构造函数和析构函数,new、delete 会自动对自定义类型对象调用构造函数初始化,再析构释放掉,指向 nullptr;