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

400-811-9990
手机站
千锋教育

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

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

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

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:西安千锋IT培训  >  技术干货  >  有了malloc为什么还要new

有了malloc为什么还要new

来源:千锋教育
发布人:xqq
时间: 2023-11-17 18:32:21

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

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

POI如何设置边框 POI设置边框的详细步骤介绍

2023-11-17

阿里云学生机选择轻量还是ECS

2023-11-17

远程连接服务器的注意事项有哪些

2023-11-17

最新文章NEW

如何查看redis是否启动

2023-11-17

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

2023-11-17

有了malloc为什么还要new

2023-11-17

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>