malloc、free和new、delete的区别
1、malloc和free是函数,可以覆盖,C、C++中都可以使用;new和delete是运算符,可以重载,只能在C++中使用
2、malloc在分配内存前需要大小,new不需要
3、malloc不安全,需要手动类型转换,new不需要类型转换
4、new是先调用构造函数再申请空间,free只释放空间,delete先调用析构函数再释放空间(如果需要)
5、内存不足(开辟失败)时处理方式不同。malloc失败返回0,new失败抛出bad_alloc异常
6、new和malloc开辟内存的位置不同。malloc开辟在堆区,new开辟在自由存储区域