全国旗舰校区

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

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

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

有了malloc为什么还要new

来源:千锋教育
发布人:xqq
2023-11-17

推荐

在线提问>>

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

相关文章

如何查看redis是否启动

pycharm发生了ide错误是怎么回事

idea配置类注释模板不生效怎么解决

python如何读取bin文件

PyCharm怎么分段运行代码

开班信息 更多>>

课程名称
全部学科
咨询

HTML5大前端

Java分布式开发

Python数据分析

Linux运维+云计算

全栈软件测试

大数据+数据智能

智能物联网+嵌入式

网络安全

全链路UI/UE设计

Unity游戏开发

新媒体短视频直播电商

影视剪辑包装

游戏原画

    在线咨询 免费试学 教程领取