2016 - 2024

感恩一路有你

malloc一定要free吗 c中malloc与new的区别?

浏览量:1541 时间:2021-03-11 04:03:46 作者:admin

c中malloc与new的区别?

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

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来管理动态内存。如果“new created dynamic object”被释放为free,则该对象可能会导致程序错误,因为它无法执行析构函数。如果使用delete释放malloc请求的动态内存,结果也会导致程序出错,但程序可读性较差。因此new/delete必须成对,malloc/free是相同的。

malloc函数的与new的区别?

Malloc是C语言,而new是C语言。Malloc是一个标准的库函数,new是C的一个操作符。它们都可以用来申请动态内存。使用new时,会自动生成构造函数。对于非内部数据类型的对象,仅使用malloc不能满足动态对象的要求。对象是在构造函数自动执行时创建的。

malloc一定要free吗 malloc几次free几次吗 malloc后没有free会导致什么

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。