技术大神|为什么还有new/delete,C++中有malloc/free
文章图片
malloc/free是C/C标准库函数 , new/delete是C++运算符 。 它们都可以用于动态申请和释放内存 。
对于内置类型数据而言 , malloc和new没有太大区别 , 主要区别在于:
malloc申请内存的时候要指定分配内存的字节数 , 而且不会做初始化;
new申请的时候有默认的初始化 , 同时可以指定初始化 。
但对于类类型的对象而言 , 用malloc/free通常是无法满足要求的 。
因为对象在创建的时候要自动执行构造函数 , 消亡之前要调用析构函数 。 比如下面这个例子 。
文章图片
可以看出 , 在使用new/delete会自动调用类的构造函数和析构函数 。
【技术大神|为什么还有new/delete,C++中有malloc/free】由于malloc/free是库函数而不是运算符 , 不在编译器控制之内 , 不能把执行构造函数和析构函数的任务强加给它 , 因此 , C++还需要new/delete 。
推荐阅读
- 「小米科技」小米11Pro宣布新技术!首发骁龙875+屏下镜头,米粉:价格有点小贵
- 良心数码点评|128位CPU为什么这么难?也许有生之年都难见到!
- 金牌娱乐|月入十万左右,扣税额就高达两万,网红大神啊段晒收入
- 小回归到爱看剧|在我国越来越没市场了?原来这是必然结果,为什么三星手机
- 强强联盟|为什么快速没落了?,被阿里收购后的优酷
- 燃财经|我为什么不想奋斗了,8位互联网人讲述:2020年
- 潮黑社|屏下指纹技术虽不再是难题,但市场却已无法挽回,LCD再获突破
- ZAKER生活|华为职员为什么要求零工资?
- 科学技术宅六六|花了一亿的一加,为何效果比花两亿的华为好?,同样定制屏幕
- 「文物」回交和近亲繁殖一样违反伦理道德,为什么还要让动物回交?