new和malloc的区别

1.new是c++的操作符,而malloc是库函数

2.new后面跟着的是类名,malloc函数里面是要申请分配内存空间的大小

3.new操作符申请内存分配时无需指定内存块的大小,编译器会根据类型信息自动计算。而malloc则需要手动指定所需内存的大小

4.new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无需进行类型的转换,故new是符合类型安全性的操作符。而malloc内存分配成功后返回的是void*类型的指针,需要通过强制转换的方式将void*指针转换成我们需要的类型

5.new如果内存分配失败的话会返回bac_alloc异常,而malloc分配失败的话会返回NULL

6.new会先调用operator new函数,申请足够的内存。然后调用类型的构造函数,初始化成员变量,最后返回自定义类型指针。而malloc只能动态的申请和释放内存,无法强制要求其做自动以类型对象构造函数。

你可能感兴趣的:(数据结构)