2016 - 2024

感恩一路有你

动态分配内存malloc c中malloc与new的区别?

浏览量:2910 时间:2021-03-16 13:40:32 作者: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 malloc一定要free吗 malloc几次free几次吗

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