首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
malloc和new的区别
[问答题]
malloc和new的区别
添加笔记
求解答(0)
邀请回答
收藏(60)
分享
纠错
18个回答
添加回答
6
牛魔王刷代码
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
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条回答
60收藏
493浏览
热门推荐
相关试题
linux系统中,在物理内存管理过...
内存技术
评论
(0)
造成系统抖动的原因不包括()
内存技术
评论
(0)
关于内存页面置换算法描述,不正确的是()
内存技术
评论
(0)
分页系统的逻辑地址结构是一维的,分...
操作系统
评论
(1)
你说在销售运营这个岗位上会涉及到一...
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题