两个函数均是运来申请内存的函数,不同之处如下:
1、返回类型:
malloc返回的是void*类型的指针,需要显示地进行类型转换。
new 返回的是分配类型的指针,不需要进行显示转换。
2、内存分配的大小:
malloc需要手动指定要分配的内存大小,以字节为单位。
new在分配内存时会根据类型自动计算所需内存大小。
3、构造函数的调用
malloc只分配内存空间,不会调用对象的构造函数。
new在分配内存后,会调用对象的构造函数进行初始化。
4、返回空指针处理
malloc在分配失败时返回NULL,需手动检查分配是否成功。
new在分配失败时会抛出异常,可用try-catch进行处理