扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1)Malloc和free是C/C语言的标准库函数,new/delete是C语言的运算符,可以用来申请动态内存和空闲内存。
创新互联建站专业为企业提供铁力网站建设、铁力做网站、铁力网站设计、铁力网站制作等企业网站建设、网页设计与制作、铁力企业网站模板建站服务,十年铁力做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。2)对于非内部数据类型的对象,单独使用malloc/free无法满足动态对象的要求。当一个对象被创建时,构造函数被自动执行,而在对象死亡之前,析构函数被自动执行。因为malloc/free是一个库函数而不是一个操作符,它不在编译器的控制权限内,所以不能将执行构造函数和析构函数的任务强加给malloc/free。因此,C语言需要一个能够完成动态内存分配和初始化的new操作符和一个能够清理和释放内存的delete操作符。注意new/delete不是库函数。我们不想使用malloc/free来管理动态对象的内存。我们应该改用new/delete。由于内部数据类型的“object”没有构造和解构的过程,malloc/free和new/delete是等价的。
3)既然new/delete功能完全覆盖了malloc/free,为什么C不消除malloc/free呢?这是因为C程序经常调用C函数,而C程序只能使用malloc/free来管理动态内存。如果“newcreateddynamicobject”被释放为free,则该对象可能会导致程序错误,因为它无法执行析构函数。如果使用delete释放malloc请求的动态内存,结果也会导致程序出错,但程序可读性较差。因此new/delete必须成对,malloc/free是相同的。
malloc函数的与new的区别?Malloc是C语言,而new是C语言。Malloc是一个标准的库函数,new是C的一个操作符。它们都可以用来申请动态内存。使用new时,会自动生成构造函数。对于非内部数据类型的对象,仅使用malloc不能满足动态对象的要求。对象是在构造函数自动执行时创建的。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流