千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 有了malloc为什么还要new

有了malloc为什么还要new

来源:千锋教育
发布人:xqq
时间: 2023-11-19 20:49:50 1700398190

malloc和new都是用于在程序中分配动态内存的方法,但它们在使用方式和行为上有一些差异。

语法差异:malloc是C语言中的库函数,而new是C++关键字。

    malloc的语法是void* malloc(size_t size),返回一个指向分配内存的指针。需要将返回的指针进行显式的类型转换,来匹配所需的类型。

    new的语法是new Type,其中Type是要分配内存的类型。new会自动根据所需类型分配内存,并返回所需类型的指针。不需要显式进行类型转换。

构造函数调用:new还可以调用对象的构造函数初始化所分配的内存空间。这对于使用C++的类非常方便。而malloc只是分配了一块内存,不会调用对象的构造函数。

内存足够性检查:malloc在分配内存时不会检查内存是否足够,可能导致内存分配失败或者访问越界。而new在分配内存时会检查内存是否足够,如果内存不足会抛出std::bad_alloc异常。

内存释放:使用malloc分配的内存需要使用free函数进行释放,而使用new分配的内存需要使用delete运算符进行释放。这是因为malloc和free是C语言中的函数,而new和delete是C++的运算符。

综上所述,虽然malloc在C++中仍然可用,但通常推荐使用new来进行动态内存分配,因为它更加方便、类型安全,并且可以自动调用构造函数进行对象初始化。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT