[CC++]newdelete与mallocfree之间究竟有何本质区别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计730个文字,预计阅读时间需要3分钟。
便于遗忘时复习
区别一:本质new/delete在C++中是运算符,不是函数,需要编译器支持。
区别二:malloc/free是库函数,需要头文件支持,在C语言中使用。
区别三:开辟内存malloc(new),释放内存free(delete)。
区别:区别二:开辟内存malloc(new),释放内存free(delete)。
**便于遗忘时复习**区别一:本质newdelete在c++中是运算符不是函数,需要编译器支持。mallocfree是库函数,需要头文件支持,在c语言中使用。区别二:开辟内存大/**便于遗忘时复习**/
区别一:本质
new/delete 在c++中是运算符不是函数,需要编译器支持。malloc/free是库函数,需要头文件支持,在c语言中使用。
区别二:开辟内存大小
用 new 操作符申请内存分配时无须指定内存块的大小,编译器会根据提供的类型信息自行计算。而malloc则需要先计算出所需内存的尺寸。
new 可以直接分配快内存,用[ ]操作;malloc 在分配快内存时,需要先把快内存的大小计算出来,然后分配;
区别三:返回类型
new操作符内存分配成功时,返回的是提供的对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。
而malloc内存分配成功则是返回void * ,需要通过强制类型转换将void*指针转换成我们需要的类型。
区别四:分配失败
new内存分配失败时,会抛出bac_alloc异常。malloc分配内存失败时返回null。
本文共计730个文字,预计阅读时间需要3分钟。
便于遗忘时复习
区别一:本质new/delete在C++中是运算符,不是函数,需要编译器支持。
区别二:malloc/free是库函数,需要头文件支持,在C语言中使用。
区别三:开辟内存malloc(new),释放内存free(delete)。
区别:区别二:开辟内存malloc(new),释放内存free(delete)。
**便于遗忘时复习**区别一:本质newdelete在c++中是运算符不是函数,需要编译器支持。mallocfree是库函数,需要头文件支持,在c语言中使用。区别二:开辟内存大/**便于遗忘时复习**/
区别一:本质
new/delete 在c++中是运算符不是函数,需要编译器支持。malloc/free是库函数,需要头文件支持,在c语言中使用。
区别二:开辟内存大小
用 new 操作符申请内存分配时无须指定内存块的大小,编译器会根据提供的类型信息自行计算。而malloc则需要先计算出所需内存的尺寸。
new 可以直接分配快内存,用[ ]操作;malloc 在分配快内存时,需要先把快内存的大小计算出来,然后分配;
区别三:返回类型
new操作符内存分配成功时,返回的是提供的对象类型的指针,类型严格与对象匹配,无须进行类型转换,故new是符合类型安全性的操作符。
而malloc内存分配成功则是返回void * ,需要通过强制类型转换将void*指针转换成我们需要的类型。
区别四:分配失败
new内存分配失败时,会抛出bac_alloc异常。malloc分配内存失败时返回null。

![[CC++]newdelete与mallocfree之间究竟有何本质区别?](/imgrand/FPED7ovs.webp)