1−malloc/free是标准库函数,需要头文件支持{\green{1 - malloc/free是标准库函数,需要头文件支持}}1−malloc/free是标准库函数,需要头文件支持
1−new/delete是运算符,需要编译器支持{\green{1-new/delete是运算符,需要编译器支持}}1−new/delete是运算符,需要编译器支持
2−使用malloc需要显示给出申请的空间大小{\green{2-使用malloc需要显示给出申请的空间大小}}2−使用malloc需要显示给出申请的空间大小
2−使用new会根据信息自行计算{\green{2-使用new会根据信息自行计算}}2−使用new会根据信息自行计算
3−malloc分配完返回void∗类型,需要强制类型转换{\green{3-malloc分配完返回void*类型,需要强制类型转换}}3−malloc分配完返回void∗类型,需要强制类型转换
3−new符合类型安全,返回对象指针{\green{3-new符合类型安全,返回对象指针}}3−new符合类型安全,返回对象指针
4−malloc分配失败返回NULL{\green{4-malloc分配失败返回NULL}}4−malloc分配失败返回NULL
4−new分配失败会抛出异常{\green{4-new分配失败会抛出异常}}4−new分配失败会抛出异常
new/delete的意义在于,
new/delete作为运算符可以自动执行类的构造函数和析构函数。
而标准库函数做不到。