免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 21205 | 回复: 53
打印 上一主题 下一主题

求真相,new和malloc,哪个操作资源消耗更大? [复制链接]

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-25 13:51 |只看该作者 |倒序浏览
c/c++的区别之一呀{:3_203:}

论坛徽章:
0
2 [报告]
发表于 2010-10-25 14:07 |只看该作者
我觉得是一样的,希望看得细致入微的CUer不要批我,我只是个做应用的菜鸟而已,不研究核心,不去计算指令数,不去考虑内存交换,不做算法优化。

论坛徽章:
0
3 [报告]
发表于 2010-10-25 14:10 |只看该作者
如果在C++里说事,malloc 不需要执行构造函数

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
4 [报告]
发表于 2010-10-25 14:17 |只看该作者
malloc和new不是C/C++的区别。
C++里面两者都可以用。

论坛徽章:
0
5 [报告]
发表于 2010-10-25 14:28 |只看该作者
new分配对象的话会自动调用构造函数。

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
6 [报告]
发表于 2010-10-25 14:54 |只看该作者
如果在C++里说事,malloc 不需要执行构造函数
xl_Streamlet 发表于 2010-10-25 14:10



    面试官也是这么对我说的

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
7 [报告]
发表于 2010-10-25 14:56 |只看该作者
回复 4# OwnWaterloo


    作为一个C++ coder应该尽量使用new,这样写的代码才有C++的味道,才符合时代潮流

论坛徽章:
0
8 [报告]
发表于 2010-10-25 15:01 |只看该作者
其实new = malloc+memcpy

论坛徽章:
0
9 [报告]
发表于 2010-10-25 15:06 |只看该作者
回复 7# shang2010

STL里就没有普通的new,都是malloc申请内存,placement new原地初始化。视场景而定,没那么绝对

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
10 [报告]
发表于 2010-10-25 15:15 |只看该作者
本帖最后由 OwnWaterloo 于 2010-10-25 15:16 编辑
回复  OwnWaterloo
作为一个C++ coder应该尽量使用new,这样写的代码才有C++的味道,才符合时代潮流 ...
shang2010 发表于 2010-10-25 14:56


我, 作为一个C++ coder, 就是反感这种态度。

追求新潮还玩什么C++?  玩java, .net什么的去。
玩什么new, 玩垃圾收集去。
玩什么编程, 玩设计模式去。


------ ------

new和malloc相比, 用的都是堆内存分配算法, 没有谁能强得过谁。
new能用的, malloc凭什么不能用? 反之也差不多。

当然, 差别不是不存在: new的体系没有realloc和calloc
这是new比malloc体系差的地方。


说构造函数有区别的, 都是只看表皮不看本质的newbie。
把C里面的struct 拿来new一下, 编译器优化开一下, 有构造函数调用吗?
C里面就没有 XXX_init这样的函数需要调用吗?

构造函数是和类型相关的
是某个类型需要构造函数, 所以new才会去执行这个操作。
这样的类型用C实现, 一样逃不了这个操作。

评分

参与人数 1可用积分 +1 收起 理由
shang2010 + 1 专家解答.谢谢分享

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP