首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
malloc和new的区别
[问答题]
malloc和new的区别
添加笔记
求解答(0)
邀请回答
收藏(63)
分享
纠错
18个回答
添加回答
7
牛魔王刷代码
malloc是C的函数,new是C++的关键字,malloc可以申请指定任意大小的内存,new只可以申请类型整数倍大小的内存,malloc返回void*, new返回类型是安全的,malloc失败返回NULL,new失败返回异常
发表于 2022-06-14 21:57:54
回复(0)
2
zh九霄
new操作符在自由存储区上为对象动态分配内存,malloc函数在堆上动态分配内存; new内存分配成功时,返回的是对象类型的指针,malloc返回的则是void *,需要强转成需要的类型; new内存分配失败时不返回NULL,会抛出bac_alloc异常,malloc返回NULL; new申请内存时无须指定内存块大小,编译器会进行计算,而malloc需要显式指出所需内存尺寸
发表于 2023-06-28 11:02:08
回复(0)
1
大学生千里马
语言差异: malloc 是C语言中的函数,位于 <stdlib.h> 头文件中。 new 是C++中的运算符,属于C++的关键字,不需要包含额外的头文件。 返回类型: malloc 返回 void* 类型的指针,需要显式进行类型转换。 new 返回所分配类型的指针,不需要进行显式类型转换。 分配内存的数量: malloc 接受一个参数,即要分配的内存空间的大小(以字节为单位)。 new 可以用于分配单个对象,也可以用于分配数组。如果用于分配数组,需要在 new 后面加上 []。 构造函数的调用: 使用 malloc 分配的内存不会调用对象的构造函数,因为 malloc 只是分配内存空间,不关心对象的构造。 使用 new 分配的内存会调用对象的构造函数来初始化对象。 分配失败处理: malloc 在内存分配失败时返回 NULL,程序员需要手动检查返回值以处理分配失败的情况。 new 在内存分配失败时抛出 std::bad_alloc 异常,程序员可以使用异常处理机制来处理分配失败的情况。</stdlib.h>
编辑于 2024-04-06 14:33:39
回复(0)
1
牛客399837097号
malloc--c语言函数--申请时确定大小--返回任意类型指针需要强转不安全--失败返回NULL; new--C++函数--申请时不需要确定大小编译器会计算大小--返回一个指定的类的对象类型--失败会抛出一个异常
发表于 2022-11-04 19:57:48
回复(0)
1
宫徵
一个位置,一个格式
发表于 2022-08-24 00:48:29
回复(0)
0
Joaniter
malloc是C函数,new是c++关键字,malloc申请空间可以任意大小,new只能是数据类型的整数倍,malloc申请失败会返回null,new则是会报错,malloc返回的是void类型需要强转而new直接返回对象类型指针
发表于 2024-03-19 21:12:44
回复(0)
0
嵌入式卡拉米
1、malloc是库函数,new是关键字 2、malloc申请内存时需要指定内存大小,new不需要 3、malloc在堆上动态分配内存,new在自由存储区上为对象动态分配内存 4、malloc的返回值是void *,需要强制转换成需要的类型,new返回值是对象类型的指针,不需要强制转换 5、malloc申请失败返回NULL,new失败返回bac_alloc异常
发表于 2024-03-11 10:09:20
回复(0)
0
理智的电容追赶太阳
(1)属性上的区别:new/delete是c++中的关键字,若要使用需要便一起的支持;事例:int *p = new int (也可以指定内存放置对象int *p = new int(6)) malloc/free是库函数,若要使用则需要引入相应的头文件.声明:(void *)malloc(int size); (2)使用上的区别:malloc:申请空间需要显式填入申请内存大小; new:无需显式填入申请内存的大小,new会根据new的类型分配内存。 (3)内存位置的区别:new分配的内存空间在自由存储区。 malloc:申请的内存是堆空间。 (4)返回值类型的区别:new操作符内存分配成功时,返回的时对象类型的指针。 malloc内存分配成功后返回的是void*,如需转换则需要强转。 (5)内存分配失败情况的区别:malloc内存分配失败时返回null。 new内存分配失败时,不返回null,而是会抛出bac_alloc异常, (6)malloc不可以重载,new可以重载
发表于 2023-11-15 11:20:41
回复(0)
0
GrennHand
malloc是C语言的函数,通过free函数释放内存;new是C++的操作符,用delete来释放内存;2.malloc返回的是void*指针,不确定返回类型,需要通过强制转换显示类型,而new会自动返回正确的类型;3.malloc申请内存时需要指定内存大小(sizeof),new会根据对象自动分配;4.malloc只是申请了一块内存,如果存储的是类的对象,不会自动调用构造函数
发表于 2023-09-19 19:49:49
回复(0)
0
编程呆子001
(1)属性上的区别:new/delete是c++中的关键字,若要使用需要便一起的支持; malloc/free是库函数,若要使用则需要引入相应的头文件。 (2)使用上的区别:malloc:申请空间需要显式填入申请内存大小; new:无需显式填入申请内存的大小,new会根据new的类型分配内存。 (3)内存位置的区别:new分配的内存空间在自由存储区。 malloc:申请的内存是堆空间。 (4)返回值类型的区别:new操作符内存分配成功时,返回的时对象类型的指针。 malloc内存分配成功后返回的是void*,如需转换则需要强转。 (5)内存分配失败情况的区别:malloc内存分配失败时返回null。 new内存分配失败时,不返回null,而是会抛出bac_alloc异常, (6)malloc不可以重载,new可以重载。
发表于 2023-08-25 11:30:49
回复(0)
0
牛牛牛启启
1. 来源,malloc是C函数,new是C++关键字; 2. 内存,malloc可指定任意大小内存,new必须是整数倍大小; 3. 返回, malloc返回void*,malloc返回对象类型指针; 4. 错误, malloc失败返回NULL,new失败返回异常。
发表于 2023-08-16 09:54:47
回复(0)
0
五年级倒数第一
malloc 是一个函数,使用时需要根据申请的类型进行强制类型转换,释放内存用free new 是一个关键字,不需要进行强制类型转换,释放内存用delete
发表于 2023-08-10 21:57:32
回复(0)
0
秋招找到好工作
1、malloc是库函数,需要头文件支持,而new是关键字,不需要头文件支持 2、malloc分配内存时需要指定内存大小,new不需要 3、malloc分配成功返回void *,new分配成功返回对象指针 4、malloc分配失败返回null,new抛出异常
发表于 2023-08-07 10:44:30
回复(0)
0
牛客889612345号
内存位置不同,返回类型的安全性不同,内存分配失败时返回值不同,指定内存大小不同
发表于 2023-07-19 19:43:05
回复(0)
0
牛客396351238号
一个是c语言,一个是c++分配内存的关键字
发表于 2023-07-10 13:30:59
回复(0)
0
牛客657168842号
molloc是函数 ,而new是关键字 malloc不会调用构造函数,而new会调用构造函数。 申请内存位置不同 new会在自由存储区动态分配内存,而malloc会在栈区域动态分配内存 返回类型安全性不同 new会严格返回对象类型指针,因此new是符合类型安全的操作,而malloc返回的是void类型的指针,需要强制转换。 失败返回类值不一样 new失败返回一个标志位,malloc返回的是NULL。 是否需要指定内存大小不同 new会根据对象类型自动分配大小,而mallic需要指定开辟的空间大小。
发表于 2022-10-26 20:49:05
回复(1)
0
牛客330378763号
1.申请的内存所在位置不同。new从自由存储区中申请,malloc从堆中申请。(自由存储区是C++虚拟出来的,与堆不完全相同) 2.返回类型不同,导致安全性不同。new是返回对象类型的指针,与所有申请内存的类型相匹配,malloc返回的是void *指针,需要将其强制转换为我们需要的类型。(例:char *) 3.内存分配失败时,返回值不同。new失败,会抛出异常;malloc失败,返回NULL。 4.是否需要指定内存大小。new不需要手动指明需要的内存块大小,编译器会根据申请的类型信息自动进行计算;malloc需要手动指明需要的内存大小。
发表于 2022-09-24 22:54:06
回复(0)
0
耳东星
内存位置、安全性、返回值、指定内存大小
发表于 2022-06-23 17:38:50
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
内存技术
上传者:
real19931
难度:
18条回答
63收藏
499浏览
热门推荐
相关试题
关于内存页面置换算法描述,不正确的是()
内存技术
评论
(0)
造成系统抖动的原因不包括()
内存技术
评论
(0)
linux系统中,在物理内存管理过...
内存技术
评论
(0)
之前的经历中单品数据分析的经验丰富...
评论
(1)
2022 诺瓦科技 Perl re...
perl
System Verilog
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题