既然C里有malloc和free,为什么C++还需要new和delete呢?

2021/8/6 14:36:00

本文主要是介绍既然C里有malloc和free,为什么C++还需要new和delete呢?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

malloc与free是C、C++语言的标准库函数,new/delete是C++的运算符。他们都用于申请动态内存和释放内存。

对于非内部数据类型的对象而言(例如类对象),只用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,也就不能自动执行构造函数和析构函数。因此,不能将执行构造函数和析构函数的任务强加给malloc/free。所以,在c++中需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理和释放内存工作的运算符delete。

链接:https://leetcode-cn.com/circle/discuss/3xmp7u/
来源:力扣(LeetCode)



这篇关于既然C里有malloc和free,为什么C++还需要new和delete呢?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程