面试题:new和malloc的区别或new和malloc的异同
相同点:
1、new/delete和malloc/free它们都是内存申请和释放的函数。
2、new/delete和malloc/free 都要一一对应,调用了多少次new 就需要调用多少次delete;同
理调用多少次malloc就需要调用多少次free。
不同点:
1、malloc/free是C语言的标准库函数,new/delete 是C++的运算符。
2、new/delete申请类对象时,并自动调用构造函数,对象生命周期完成后,自动调用析构函
数;malloc/free不会,因为只是简单的对内存申请和销毁操作。
3、new/delete和malloc/free,C++可以调用。因为它们不是C的库函数,所以C无法调用它,
C只能调用malloc/free。
4、返回类型不同,new出的对象返回的是对象指针,而malloc的是void*类型
5、new 申请对象时可以不需要写明申请内存大小,由程序自己计算,malloc 需要明确写出申
请内 存的length 长度。
6、申请失败返回结果不一样,malloc内存申请失败是返回null,而new申请失败抛出异常