在C++中, new 和 malloc都用于动态内存的申请, delete和free都用于动态内存的释放。而他们都有哪些区别?
new和malloc 1首先,他们第一个区别就是new和delete是运算符,可以直接使用;而malloc和free是库函数,在使用前需要引入头文件。
因为new已经指定类型了,不需要进行类型强转,使用起来非常简单;而malloc函数的返回值是void*,在接收返回值时还需要进行类型强转,没有new来的方便。
new和malloc 2第二个不同就是new除了可以申请动态内存外,还可以做内存初始化操作,而malloc是不支持初始化操作的。
new和malloc 3第三个不同就是在内存申请失败时的处理方式。
malloc申请内存失败,是通过返回值是否是空指针来判断的;而new申请内存失败,是通过抛出bad_alloc类型的移除来判断的。
在动态申请一个数组时,free释放内存直接把申请的数组的起始地址传进去即可;而delete在释放时需要加上[ ] :delete []



