全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

有了malloc为什么还要new

发布时间:2023-11-19 20:49:50
发布人:xqq

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来进行动态内存分配,因为它更加方便、类型安全,并且可以自动调用构造函数进行对象初始化。

it技术干货

相关文章

css禁止选中文本怎么实现 附示例演示

css禁止选中文本怎么实现 附示例演示

2023-11-19
CSS设置了border显示不出来怎么办

CSS设置了border显示不出来怎么办

2023-11-19
xlsx文件损坏如何修复

xlsx文件损坏如何修复

2023-11-19
pycharm误删桌面整个文件夹怎么办

pycharm误删桌面整个文件夹怎么办

2023-11-19

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31
在线咨询 免费试学 教程领取