189 8069 5689

malloc一定要free吗c中malloc与new的区别?-创新互联

c中malloc与new的区别?1.New是C中的一个运算符,malloc是C中的一个函数,它不仅分配内存,而且调用类的构造函数。类似地,delete调用类的析构函数,而malloc只分配内存,不初始化类成员。类似地,free不调用析构函数。三。可以检测malloc或new的内存泄漏。不同之处在于new可以指示该文件的行,而malloc不指示该信息。4比较new和malloc的效率new有三个字母,malloc有六个字母,new可以认为是malloc加上构造函数的执行。新指针直接包含类型信息。Malloc返回空指针。malloc一定要free吗 c
中malloc与new的区别?malloc和new的区别是什么?

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不能满足动态对象的要求。对象是在构造函数自动执行时创建的。


文章名称:malloc一定要free吗c中malloc与new的区别?-创新互联
当前地址:http://jkwzsj.com/article/deojej.html

其他资讯